let haoroomsDataArr = [
{ id: 1, name: "haorooms1" },
{ id: 2, name: "haorooms2", parentId: 1 },
{ id: 4, name: "haorooms4", parentId: 3 },
{ id: 3, name: "haorooms3", parentId: 2 },
{ id: 8, name: "haorooms18", parentId: 7 },
{ id: 7, name: "haorooms2" },
];
function getTreeData(arr) {
let parents = arr.filter(item => !item.parentId); //取出根节点
let childrens = arr.filter(item => item.parentId);//去除子节点
function translator(parents, childrens) {
parents.forEach(item => {
childrens.forEach(items => {
if (items.parentId === item.id) {
item.children ? item.children.push(items) : item.children = [items];
translator([items], childrens);
}
})
})
}
translator(parents, childrens);
return parents
}
console.log(getTreeData(haoroomsDataArr))
输出结果
[{
"id": 1,
"name": "haorooms1",
"children": [{
"id": 2,
"name": "haorooms2",
"parentId": 1,
"children": [{
"id": 3,
"name": "haorooms3",
"parentId": 2,
"children": [{
"id": 4,
"name": "haorooms4",
"parentId": 3
}]
}]
}]
}, {
"id": 7,
"name": "haorooms2",
"children": [{
"id": 8,
"name": "haorooms18",
"parentId": 7
}]
}]