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

js 对象数组递归

js 对象数组递归

偶然的你 2019-03-28 22:19:01
多级嵌套的对象数组,有一个id,根据这个id去查找,和这个id有关系的id,我的写法如下,不知道哪里有问题?如下,id为113,希望获取到的为1,11,113这样的数组(不要通过str.splice等方式实现)var arr = [{        "menuId": 1,        "menuName": "物联网",        "defaultIcon": "icon-wulianwangjiankong",        "path": "/internet_things",        "childs": [            {                "menuId": 11,                "menuName": "首页",                "defaultIcon": "icon-home",                "path": "/internet_things/home",                "childs": [                    {                        "menuId": 111,                        "menuName": "数据分析",                        "defaultIcon": "",                        "path": "/internet_things/home/data_analyse",                        "childs": []                    },                    {                        "menuId": 112,                        "menuName": "设备分布",                        "defaultIcon": "",                        "path": "/internet_things/home/device_loc",                        "childs": []                    }              ]             }            ]           }          ];
查看完整描述

2 回答

?
POPMUISE

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

id相等时 将父id也push进数组


查看完整回答
反对 回复 2019-04-10
?
Helenr

TA贡献1780条经验 获得超4个赞

function testArr(arr, id){

    var resulte = []

    var loop = function(arr){

        return arr.some(item=>{

            if(item.menuId == id){

                resulte.unshift(item.menuId)

                return true

            }

            if(Array.isArray(item.childs)){

                var childHasId = loop(item.childs)

                childHasId && resulte.unshift(item.menuId)

                return childHasId

            }

        })

    }

    loop(arr)

    return resulte

}

testArr(arr,'112'); //[1, 11, 112]


查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 1037 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信