const list = id 04 pid 03 id 01 pid null id 02 pid null id 03 pid 01 id 05 pid 01 id 06 pid 03 id 07 pid 02 id 09 pid 02
可以使用递归的方式来将给定的数组转化为树形结构的简单代码。
function buildTree(list, parentId) {
const tree = [];
for (let i = 0; i < list.length; i++) {
if (list[i].pid === parentId) {
const node = {
id: list[i].id,
children: buildTree(list, list[i].id)
};
tree.push(node);
}
}
return tree;
}
const list = [
{ id: 4, pid: 3 },
{ id: 1, pid: null },
{ id: 2, pid: null },
{ id: 3, pid: 1 },
{ id: 5, pid: 1 },
{ id: 6, pid: 3 },
{ id: 7, pid: 2 },
{ id: 9, pid: 2 },
{ id: 10, pid: 7 },
];
const tree = buildTree(list, null);
console.log(tree);
上述代码中,buildTree函数接受一个数组和一个父节点ID作为参数,并返回对应的树形结构。在函数内部,使用一个循环遍历给定的数组,找到所有父节点ID与传入的父节点ID相等的项,并递归调用buildTree函数来构建子树。最后返回构建好的树形结构。
输出结果为:
[
{
"id": 1,
"children": [
{
"id": 3,
"children": [
{
"id": 4,
"children": []
},
{
"id": 6,
"children": []
}
]
},
{
"id": 5,
"children": []
}
]
},
{
"id": 2,
"children": [
{
"id": 7,
"children": [
{
"id": 10,
"children": []
}
]
},
{
"id": 9,
"children": []
}
]
}
]
``
原文地址: http://www.cveoy.top/t/topic/iHvq 著作权归作者所有。请勿转载和采集!