将数组转为树结构
通过 id 和 parentId,将下列数组转为树结构
const arr = [
{
id: 2,
name: "部门B",
parentId: 0,
},
{
id: 3,
name: "部门C",
parentId: 1,
},
{
id: 1,
name: "部门A",
parentId: 2,
},
{
id: 4,
name: "部门D",
parentId: 1,
},
{
id: 5,
name: "部门E",
parentId: 2,
},
{
id: 6,
name: "部门F",
parentId: 3,
},
{
id: 7,
name: "部门G",
parentId: 2,
},
{
id: 8,
name: "部门H",
parentId: 4,
},
];
本题主要考察对递归算法的理解:
function transferTree(arr, parentId) {
let node = arr.filter(item => item.parentId === parentId)
if(!node.length) return
node.forEach(element => {
element.children = transferTree(arr, element.id)
});
return node
}
console.log(JSON.stringify(transferTree(restArr, 0)))
打印结果:
[
{
id: 2,
name: "部门B",
parentId: 0,
children: [
{
id: 1,
name: "部门A",
parentId: 2,
children: [
{
id: 3,
name: "部门C",
parentId: 1,
children: [{ id: 6, name: "部门F", parentId: 3 }],
},
{
id: 4,
name: "部门D",
parentId: 1,
children: [{ id: 8, name: "部门H", parentId: 4 }],
},
],
},
{ id: 5, name: "部门E", parentId: 2 },
{ id: 7, name: "部门G", parentId: 2 },
],
}
];
小伙伴们给个赞吧!