var source = [
{ id:1,pid:0,value:"节点1" },
{ id:2,pid:1,value:"节点11" },
{ id:3,pid:1,value:"节点12" },
{ id:4,pid:1,value:"节点13" },
{ id:5,pid:0,value:"节点2" },
{ id:6,pid:5,value:"节点21" },
{ id:7,pid:5,value:"节点22" },
{ id:8,pid:5,value:"节点23" },
{ id:9,pid:0,value:"节点3" },
{ id:10,pid:9,value:"节点31" },
{ id:11,pid:10,value:"节点32" },
{ id:12,pid:11,value:"节点33" },
{ id:13,pid:12,value:"节点34" },
{ id:14,pid:13,value:"节点35" },
{ id:15,pid:14,value:"节点36" },
{ id:16,pid:0,value:"节点4" }
]
function toTree(data) {
let result = []
if (!Array.isArray(data)) {
return result
}
data.forEach(item => {
delete item.children;
});
let map = {};
data.forEach(item => {
map[item.id] = item;
});
data.forEach(item => {
let parent = map[item.pid];
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
result.push(item);
}
});
return result;
}
console.log(toTree(source))