js获取数组型树结构中的某个节点及其所有父节点组成的树结构
时间: 2023-06-26 13:05:14 浏览: 116
假设你已经有了一个数组型的树结构,其中每个节点都包含有一个 `id` 字段和一个 `parentId` 字段,表示该节点的父节点的 `id`。假设你要获取某个节点及其所有的父节点组成的树结构,可以使用以下代码:
```javascript
function getNodeAndParents(tree, nodeId) {
// 找到该节点
const node = tree.find(node => node.id === nodeId);
if (!node) {
return null;
}
// 找到该节点的所有父节点
const parents = [];
let parentId = node.parentId;
while (parentId) {
const parent = tree.find(node => node.id === parentId);
if (!parent) {
break;
}
parents.unshift(parent);
parentId = parent.parentId;
}
// 组成树结构
let result = node;
for (let i = parents.length - 1; i >= 0; i--) {
const parent = parents[i];
result = {
...parent,
children: [result],
};
}
return result;
}
```
使用示例:
```javascript
const tree = [
{ id: 1, parentId: null },
{ id: 2, parentId: 1 },
{ id: 3, parentId: 2 },
{ id: 4, parentId: 2 },
];
const node = getNodeAndParents(tree, 3);
console.log(node);
// 输出:
// {
// id: 3,
// parentId: 2,
// children: [
// {
// id: 2,
// parentId: 1,
// children: [
// {
// id: 1,
// parentId: null,
// },
// ],
// },
// ],
// }
```
注意,上述代码假设根节点的 `parentId` 为 `null`,如果你的树结构中根节点的 `parentId` 不是 `null`,需要稍微修改一下代码。
阅读全文