首页  >  文章  >  web前端  >  如何通过标签查找嵌套 JavaScript 对象中的特定对象?

如何通过标签查找嵌套 JavaScript 对象中的特定对象?

Linda Hamilton
Linda Hamilton原创
2024-11-03 21:13:29355浏览

How to Find a Specific Object within  a Nested JavaScript Object by Label?

迭代嵌套 JavaScript 对象:通过标签识别对象

要遍历嵌套 JavaScript 对象并定位具有特定标签的对象,请按照以下步骤操作:

使用递归实现

递归地迭代嵌套对象:

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])
        }
    })
}
iterate(obj); // obj is the main object to be traversed

使用非递归方法实现(2023 更新)

对于非递归方法:

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]);
            }
        });
    }
};

示例对象

考虑以下嵌套对象:

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: []
        }
    ]
};

使用标识符

检索带有标签 " 的对象4 Wheel Drive”使用递归方法,调用:

iterate(cars);

要使用非递归方法检索相同的对象,调用:

iterate(cars);

这将记录所有密钥 -嵌套对象中的值对,包括所需的对象。

以上是如何通过标签查找嵌套 JavaScript 对象中的特定对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn