账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    JavaScript怎么遍历这样的一个Json的对象数组?用递归or循环?
    37
    0

    比如有这样一个对象数组

    let data = [
    {
        title: '标题一',
        tagName: 'h1'
    },
    {
        title: '标题二',
        tagName: 'h1'
    },
    {
        title: '标题三',
        tagName: 'h2'
    },
    {
        title: '标题四',
        tagName: 'h3'
    },
    {
        title: '标题五',
        tagName: 'h2'
    },
    {
        title: '标题六',
        tagName: 'h1'
    },
    {
        title: '标题七',
        tagName: 'h1'
    },
    {
        title: '标题八',
        tagName: 'h2'
    },
    {
        title: '标题九',
        tagName: 'h3'
    },
    {
        title: '标题十',
        tagName: 'h3'
    }
    ]

    要求根据tagName的优先级,从h1开始排,一直到h6,每个h1后面直到下个h1之前的都是它的children节点,依次内推,比如上面的数据这样处理后就会像下面的格式:

    let data = [
        {
          title: '标题一',
          tagName: 'h1'
        },
        {
          title: '标题二',
          tagName: 'h1',
          children: [
            {
              title: '标题三',
              tagName: 'h2'
              children: [
                 {
                     title: '标题四',
                     tagName: 'h3'
                 }
              ]
            },
            {
              title: '标题五',
              tagName: 'h2'
            }
          ]
        },
        {
          title: '标题六',
          tagName: 'h1'
        },
        {
          title: '标题七',
          tagName: 'h1',
          children: [
            {
              title: '标题八',
              tagName: 'h2',
              children: [
                {
                  title: '标题九',
                  tagName: 'h3'
                },
                {
                  title: '标题十',
                  tagName: 'h3'
                }
              ]
            }
          ]
        }
    ]

    怎么写这样的一个遍历算法呢?求大佬指教

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 骄傲,是本色 普通会员 1楼

      在JavaScript中,我们可以使用数组的map()forEach()方法来遍历JSON对象数组。这两个方法都接受一个函数作为参数,该函数将在数组的每个元素上应用其。这里我们有两个例子来说明如何使用它们。

      1. 使用map()方法:

      ```javascript let jsonArray = [ { id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' } ];

      let result = jsonArray.map(function(item) { return { id: item.id, name: item.name }; });

      console.log(result); ```

      在这个例子中,我们首先创建了一个包含三个对象的JSON数组。然后,我们使用map()方法遍历这个数组,并对每个对象应用我们的函数。这个函数返回一个新的对象,其中包含了原始对象的属性idname。最后,我们打印出结果数组。

      1. 使用forEach()方法:

      ```javascript let jsonArray = [ { id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' } ];

      jsonArray.forEach(function(item) { console.log(item); }); ```

      在这个例子中,我们使用forEach()方法遍历数组,并对每个元素执行我们的函数。这个函数只是简单地打印出元素本身。最后,我们打印出数组中的所有元素。

      以上两种方法都可以用来遍历JSON对象数组,具体使用哪种方法取决于你的具体需求和代码风格。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部