js json对象从子级找最外层父级怎么找,有方法吗

父级找子集直接点就行了,子集找父级呢?怎么操作


let arrn=[

        {

            "MENU_URL": "dashboard",

            "MENU_ID": "104a580029c54e139210b7e87dca6d89",

            "MENU_NAME": "监控面板"

        },

        {

            "MENU_URL": "systemManage",

            "MENU_ID": "769130d1918d47219e6f0c463a1c9c67",

            "MENU_NAME": "系统管理"

        },

        {

            "MENU_URL": "serviceManage",

            "MENU_ID": "8619ca0b6fbc42649a27475e339d5d4a",

            "MENU_INFO": [

                {

                    "MENU_URL": "userInfo",

                    "MENU_ID": "104a580029c54e139210b7e87dca6d89",

                    "MENU_NAME": "三户信息"

                }

            ],

            "MENU_NAME": "业务管理"

        },

        {

            "MENU_URL": "serviceManage/recordQuery",

            "MENU_ID": "d379e3f38cb3472ab18287034f32ef46",

            "MENU_INFO": [

                {

                    "MENU_URL": "dashboard",

                    "MENU_ID": "104a580029c54e139210b7e87dca6d80",

                    "MENU_INFO": [

                        {

                            "MENU_URL": "dashboard",

                            "MENU_ID": "454a580029c54e139210b7e87dca6d82",

                            "MENU_NAME": "监控面板222"

                        }

                    ],

                    "MENU_NAME": "监控面板111"

                },

                {

                    "MENU_URL": "dashboard",

                    "MENU_ID": "104a580029c54e139210b7e87dca6d89",

                    "MENU_NAME": "监控面板333"

                }

            ],

            "MENU_NAME": "订购信息查询"

        }

    ]

知道监控面板222的MENU_ID,要找到最外层的MENU_ID



现在写了一个能从第二级找到第一级

```

function getParentId(childId) {

    tmparr.forEach(function (item, index) {

        if (item.MENU_INFO) {

            item.MENU_INFO.forEach(function (list, idx) {

                if (list.MENU_ID === childId) {

                    console.log('d', item)

                }

            })

        }

    })

}

getParentId('104a580029c54e139210b7e87dca6d80')

```

有没有高手可以改造一下,用递归什么的,查不定级数的


森栏
浏览 634回答 4
4回答

墨色风雨

有个很巧的办法:把Menu对应的数组对象arrn转成字符串,然后使用正则查找,异常轻松,可以适配无限深的层级。function findTopParent(menuJson, childId) {   let menuStr = JSON.stringify(menuJson);   let reg = new RegExp('MENU_ID":"([^"]+)"[^\\}\\]]+MENU_ID":"' + childId);   return reg.test(menuStr) ? menuStr.match(reg)[1]: undefined;}findTopParent(arrn, '104a580029c54e139210b7e87dca6d89');  //返回8619ca0b6fbc42649a27475e339d5d4afindTopParent(arrn, '454a580029c54e139210b7e87dca6d82');  //返回d379e3f38cb3472ab18287034f32ef46

郎朗坤

你怎么拿到子集的?子集去掉点后面的不就是父级。

翻阅古今

可以找到父id,可能是我描述有问题,我是想找最外层父id
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript