猿问

js 对象数组递归

多级嵌套的对象数组,有一个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": []

                    }

              ]

             }

            ]

           }

          ];


偶然的你
浏览 1038回答 2
2回答

POPMUISE

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

Helenr

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]
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答