首页 > web前端 > js教程 > 正文

如何迭代嵌套的 JavaScript 对象?

Mary-Kate Olsen
发布: 2024-11-03 05:24:31
原创
662 人浏览过

How Can You Iterate Through Nested JavaScript Objects?

迭代嵌套的 JavaScript 对象

迭代嵌套的 JavaScript 对象可能具有挑战性,特别是当您需要检索由具体的财产价值。考虑下面的示例:

var cars = {
  label: 'Autos',
  subs: [
    {
      label: 'SUVs',
      subs: []
    },
    {
      label: 'Trucks',
      subs: [
        {
          label: '2 Wheel Drive',
          subs: []
        },
        {
          label: '4 Wheel Drive',
          subs: [
            {
              label: 'Ford',
              subs: []
            },
            {
              label: 'Chevrolet',
              subs: []
            }
          ]
        }
      ]
    },
    {
      label: 'Sedan',
      subs: []
    }
  ]
};
登录后复制

递归迭代方法:

要深入遍历对象层次结构,您可以使用递归方法:

const iterate = (obj) => {
    Object.keys(obj).forEach(key => {

    console.log(`key: ${key}, value: ${obj[key]}`)

    if (typeof obj[key] === 'object' && obj[key] !== null) {
            iterate(obj[key])
        }
    })
}
登录后复制

该函数递归地迭代对象,打印每个级别的键值对。如果遇到的属性包含另一个对象,则该函数以该对象作为参数调用自身。

非递归迭代方法:

另一种非递归方法涉及使用堆栈数据结构:

const iterate = (obj) => {
    const stack = [obj];
    while (stack?.length > 0) {
        const currentObj = stack.pop();
        Object.keys(currentObj).forEach(key => {
            console.log(`key: ${key}, value: ${currentObj[key]}`);
            if (typeof currentObj[key] === 'object' && currentObj[key] !== null) {
                stack.push(currentObj[key]);
            }
        });
    }
};
登录后复制

此函数利用堆栈迭代对象层次结构。它从堆栈中弹出最后一个元素并迭代其属性。如果属性保存一个对象,它会将该对象推送到堆栈上以进行进一步迭代。

以上是如何迭代嵌套的 JavaScript 对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板