zTree樹 生成帶children的數(shù)據(jù)

生成帶孩子的js樹? ?層級(jí)樹

var data = [

{ id: 1, name: "辦公管理", pid: 0 },

{ id: 2, name: "請(qǐng)假申請(qǐng)", pid: 1 },

{ id: 3, name: "出差申請(qǐng)", pid: 1 },

{ id: 4, name: "請(qǐng)假記錄", pid: 2 },

{ id: 5, name: "系統(tǒng)設(shè)置", pid: 0 },

{ id: 6, name: "權(quán)限管理", pid: 5 },

{ id: 7, name: "用戶角色", pid: 6 },

{ id: 8, name: "菜單設(shè)置", pid: 6 },

];

function toTree(data) {

? ? ? ? // 刪除 所有 children,以防止多次調(diào)用

? ? ? ? data.forEach(function (item) {

? ? ? ? ? ? ?delete item.children;

? ? ? ? ?});

? ? ? ? // 將數(shù)據(jù)存儲(chǔ)為 以 id 為 KEY 的 map 索引數(shù)據(jù)列

? ? ? ? var map = {};

? ? ? ? data.forEach(function (item) {

//console.log(item);

? ? ? ? ? ? map[item.id] = item;

? ? ? ? });

? //? ? console.log(map);

? ? ? ? var val = [];

? ? ? ? data.forEach(function (item) {

? ? ? ? ? ? // 以當(dāng)前遍歷項(xiàng),的pid,去map對(duì)象中找到索引的id

? ? ? ? ? ? var parent = map[item.pid];

//console.log(parent);

? ? ? ? ? ? // 好繞啊,如果找到索引,那么說明此項(xiàng)不在頂級(jí)當(dāng)中,那么需要把此項(xiàng)添加到,他對(duì)應(yīng)的父級(jí)中

? ? ? ? ? ?if (parent) {

? ? ? ? ? ? ? ? ?(parent.children || ( parent.children = [] )).push(item);

? ? ? ? ? ? ?} else {

? ? ? ? ? ? ? ? ?//如果沒有在map中找到對(duì)應(yīng)的索引ID,那么直接把 當(dāng)前的item添加到 val結(jié)果集中,作為頂級(jí)

? ? ? ? ? ? ? ? ?val.push(item);

? ? ? ? ? ? ?}

? ? ? ? });

? ? ? ? return val;

? ? }

? ? console.log(toTree(data))




function test() {

? ? ? const list = [

? ? ? ? { id: "123", parentId: "", children: [] },

? ? ? ? { id: "124", parentId: "123", children: [] },

? ? ? ? { id: "125", parentId: "124", children: [] },

? ? ? ? { id: "126", parentId: "125", children: [] },

? ? ? ? { id: "127", parentId: "126", children: [] }

? ? ? ];

? ? ? const mapList = [];

? ? ? const tree = [];

? ? ? list.forEach(item => {


? ? ? ? mapList[item.id] = item;

? ? ? });

? ? ? list.forEach(item => {

? ? ? ? const parentNode = mapList[item.parentId];

? ? ? ? if (!parentNode) {

if (!item.children) {

item.children = []

}

? ? ? ? ? tree.push(item);

? ? ? ? } else {

if (!parentNode.children) {

parentNode.children = []

}

? ? ? ? ? parentNode.children.push(item);

? ? ? ? }

? ? ? });

? ? ? console.log("tree", tree);

? ? }

test();

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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