// 使用映射的方法
function arrayToTree(array) {
let map = {}; // 存储id和节点的映射
let root = null; // 根节点
let rootId = null
for (let item of array) {
map[item.id] = item; // 将节点添加到映射中
item.children = []; // 初始化子节点数组
if (item.parentId === 0) { // 如果没有父节点,说明是根节点
root = item;
rootId = item.id
}
}
for (let key in map) {
if(key == rootId) continue;
// 如果有父节点,找到父节点并将当前节点添加到其子节点数组中
let parent = map[key].parentId;
map[parent].children.push(map[key]);
}
return root;
}
let a = [
{
id:1,
name:'1',
parentId:7,
},
{
id:2,
name:'2',
parentId:7,
},
{
id:3,
name:'3',
parentId:2,
},
{
id:4,
name:'4',
parentId:4,
},
{
id:5,
name:'5',
parentId:3,
},
{
id:7,
name:'0',
parentId:0,
},
]
console.log(arrayToTree(a))
console