为了账号安全,请及时绑定邮箱和手机立即绑定

遍历嵌套的JavaScript对象

遍历嵌套的JavaScript对象

斯蒂芬大帝 2019-09-24 15:13:31
我试图遍历嵌套对象以检索由字符串标识的特定对象。在下面的示例对象中,标识符字符串是“ label”属性。我无法解决如何遍历树以返回适当对象的问题。任何帮助或建议,将不胜感激。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: []    }  ]}
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

您可以创建像这样的递归函数来对cars对象进行深度优先遍历。


var findObjectByLabel = function(obj, label) {

    if(obj.label === label) { return obj; }

    for(var i in obj) {

        if(obj.hasOwnProperty(i)){

            var foundLabel = findObjectByLabel(obj[i], label);

            if(foundLabel) { return foundLabel; }

        }

    }

    return null;

};

可以这样称呼


findObjectByLabel(car, "Chevrolet");


查看完整回答
反对 回复 2019-09-24
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

如果你想深遍历到一个复杂的(嵌套)对象为每个键和值,你可以这样做使用Object.keys() ,递归:


const iterate = (obj) => {

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


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


    if (typeof obj[key] === 'object') {

            iterate(obj[key])

        }

    })

}


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 1586 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号