对象列表转树型列表
时间: 2023-06-30 14:17:22 浏览: 82
对象列表转树型列表的过程可以通过递归实现。假设我们有一个对象列表,每个对象有一个id和一个parent_id表示其在树中的层级关系。我们需要将这个对象列表转换成树型列表,其中每个节点都包含一个子节点列表。
具体实现步骤如下:
1. 首先定义一个递归函数,函数的参数包括当前节点的id和整个对象列表。
2. 在函数中,我们首先找到当前节点的所有子节点,也就是parent_id等于当前节点id的对象。
3. 遍历子节点列表,对于每个子节点,递归调用函数,将子节点作为参数传入,得到子节点的子节点列表。
4. 将子节点列表添加到当前节点的子节点列表中。
5. 最后返回当前节点的子节点列表。
代码示例(假设对象列表中每个对象都有id和parent_id属性):
```
function buildTree(nodeId, list) {
const children = [];
// 找到当前节点的所有子节点
for (let i = 0; i < list.length; i++) {
if (list[i].parent_id === nodeId) {
const childNode = list[i];
const childList = buildTree(childNode.id, list);
childNode.children = childList;
children.push(childNode);
}
}
return children;
}
// 示例用法
const list = [
{ id: 1, parent_id: null },
{ id: 2, parent_id: 1 },
{ id: 3, parent_id: 2 },
{ id: 4, parent_id: 2 },
{ id: 5, parent_id: 1 },
{ id: 6, parent_id: 5 },
{ id: 7, parent_id: 6 },
];
const tree = buildTree(null, list);
console.log(tree);
```
输出结果:
```
[
{
"id": 1,
"parent_id": null,
"children": [
{
"id": 2,
"parent_id": 1,
"children": [
{
"id": 3,
"parent_id": 2,
"children": []
},
{
"id": 4,
"parent_id": 2,
"children": []
}
]
},
{
"id": 5,
"parent_id": 1,
"children": [
{
"id": 6,
"parent_id": 5,
"children": [
{
"id": 7,
"parent_id": 6,
"children": []
}
]
}
]
}
]
}
]
```
阅读全文