扁平数据结构转tree

 let arr = [{
                id: 1,
                name: '部门1',
                pid: 0
            },
            {
                id: 2,
                name: '部门2',
                pid: 1
            },
            {
                id: 3,
                name: '部门3',
                pid: 1
            },
            {
                id: 4,
                name: '部门4',
                pid: 3
            },
            {
                id: 5,
                name: '部门5',
                pid: 4
            },
        ]

   console.log(arrayToTree(arr))

        function arrayToTree(items) {
            const result = []; // 存放结果集
            const itemMap = {}; // 
            for (const item of items) {
                const id = item.id;
                const pid = item.pid;

                if (!itemMap[id]) {
                    itemMap[id] = {
                        children: [],
                    }
                }
                itemMap[id] = {
                    ...item,
                    children: itemMap[id]['children']
                }
                const treeItem = itemMap[id];

                if (pid === 0) {
                    result.push(treeItem);
                } else {
                    if (!itemMap[pid]) {
                        itemMap[pid] = {
                            children: [],
                        }
                    }
                    itemMap[pid].children.push(treeItem)
                }

            }
            return result;
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。