js 数组转树
const arr = [
{id: 1, name: '部门A', parentId: 0},
{id: 2, name: '部门B', parentId: 1},
{id: 3, name: '部门C', parentId: 1},
{id: 4, name: '部门D', parentId: 2},
{id: 5, name: '部门E', parentId: 2},
{id: 6, name: '部门F', parentId: 3},
];
function arrToTree(array) {
let parentList = [];
let obj = {}
array.forEach(el => {
obj[el.id] = el;
});
array.forEach(el => {
let parent = obj[el.parentId];
if (parent) {
parent.children = parent.children || [];
parent.children.push(el)
} else {
parentList.push(el);
}
})
return parentList;
}
console.log(arrToTree(arr))
function getTree(data) {
let res = [];
data.forEach(el => {
const parent = data.find(node => el.parentId === node.id)
console.log(parent)
if (parent) {
parent.children = parent.children || [];
parent.children.push(el)
} else {
res.push(el)
}
})
return res
}
console.log(getTree(arr))