js递归获取树形菜单某个节点的所有父节点

let arr=[
            {
                id:1,
                name:1,
                children:[
                    {
                        id:2,
                        name:2,
                        children:[
                            {
                                id:3,
                                name:3,
                                children:[]
                            }
                        ]
                    }
                ]
            },
            {
                id:4,
                name:4,
                children:[
                    {
                        id:5,
                        name:5,
                        children:[
                            {
                                id:6,
                                name:6,
                                children:[]
                            }
                        ]
                    }
                ]
            },

        ]
        function getTree(arr,id){
            for(let i=0;i<arr.length;i++){

                if(arr[i].id==id){
                    return [arr[i]];
                }
                if(arr[i].children.length>0){
                    let node = getTree(arr[i].children,id)
                    if(node!==undefined){
                        return node.concat(arr[i]);
                    }
                }
            }

        }
        console.log(getTree(arr,6));

 

posted @ 2024-01-08 16:13  李云蹊  阅读(168)  评论(0编辑  收藏  举报