鍍金池/ 問答/HTML/ js 對象數(shù)組遞歸

js 對象數(shù)組遞歸

多級嵌套的對象數(shù)組,有一個id,根據(jù)這個id去查找,和這個id有關(guān)系的id,我的寫法如下,不知道哪里有問題?

clipboard.png

如下,id為113,希望獲取到的為1,11,113這樣的數(shù)組(不要通過str.splice等方式實(shí)現(xiàn))
var arr = [

    {
        "menuId": 1,
        "menuName": "物聯(lián)網(wǎng)",
        "defaultIcon": "icon-wulianwangjiankong",

        "path": "/internet_things",
        "childs": [
            {
                "menuId": 11,
                "menuName": "首頁",
                "defaultIcon": "icon-home",
                "path": "/internet_things/home",
                "childs": [
                    {
                        "menuId": 111,
                        "menuName": "數(shù)據(jù)分析",
                        "defaultIcon": "",
                        "path": "/internet_things/home/data_analyse",
                        "childs": []
                    },
                    {
                        "menuId": 112,
                        "menuName": "設(shè)備分布",
                        "defaultIcon": "",
                        "path": "/internet_things/home/device_loc",
                        "childs": []
                    }
              ]
             }
            ]
           }
          ];
回答
編輯回答
不討囍

id相等時 將父id也push進(jìn)數(shù)組

2018年3月31日 12:22
編輯回答
帥到炸

你這樣表達(dá)不清楚,如果只是找id相關(guān)的,用循環(huán)和字符串截取就行了.....

2018年3月16日 09:47
編輯回答
莓森
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]
2017年12月4日 05:26