扁平數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)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 = []; // 存放結(jié)果集
            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;
        }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容