JS 根据子id查询所有父id

原创
2020/12/08 20:10
阅读数 1.9K

JS 根据子id查询所有父id

更新时间:2020-12-09

一.问题描述

后端传给前端只有子组织的id,但是需要查找到所有的父组织的id才能显示组织结构。

二.解决方案

1.将后端传来的数据格式化一下,格式成{id:'1',parentId:'0',childern:[]}这样的格式,为了方便定位父id。

2.先递归查找到子组织id的节点,然后拿到对象的父组织id,再递归查找父组织id的组织,以此类推。

源代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script type="text/javascript">
        let testArray = [
            {
                id:'1',
                parentId:'0',
                children:[]
            },
            {
                id:'2',
                parentId:'0',
                children:[
                    {
                        id:'2-1',
                        parentId:'2',
                        children:[]
                    }
                ]
            },
            {
                id:'3',
                parentId:'0',
                children:[
                    {
                        id:'3-1',
                        parentId:'3',
                        children:[
                            {
                                id:'3-1-1',
                                parentId:'3-1',
                                children:[]
                            }
                        ]
                    }
                ]
            }
        ];
        
        function findParents(array,id){
            let parentArray = [];
            
            if (array.length === 0) {
                return parentArray;
            }
            
            function recursion(arrayNew,id){
                for (let i = 0; i < arrayNew.length; i++) {
                    let node = arrayNew[i];
                    if(node.id === id){
                        parentArray.unshift(id);
                        recursion(array,node.parentId);
                        break;
                    }else{
                        if (!!node.children) {
                            recursion(node.children,id);
                        }
                    }
                }
                return parentArray;
            }
            let arrayNew = array;
            parentArray = recursion(arrayNew, id);
            return parentArray;
        }
        
        let resultArray = findParents(testArray,'3-1-1');
        console.log(resultArray);
    </script>
</html>

以上就是JS 根据子id查询所有父id的解决方案.

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部