树结构根据子节点返回相应父节点树结构?
假设树结构如下:
tree = [
{
id: 1,
label: '节点-1',
child: [
{
id: 2,
label: '节点-2',
child: [
{
id: 3,
label: '节点-3',
child: [
{
id: 6,
label: '节点-6'
}
],
}
]
},
{
id: 4,
label: '节点-4',
child: [
{
id: 5,
label: '节点-5',
child: [
{
id: 7,
label: '节点-7'
}
],
}
]
},
]
}
]
我想找出id === 7的所有父节点,并且也是树结构形式,请教各位大佬!
回复
1个回答
test
2024-07-08
用递归来找就行了:
function findParentNode(tree, targetId) {
if (!tree || !Array.isArray(tree)) return null;
for (let node of tree) {
if (node.id === targetId) {
return [node];
}
if (node.child) {
const path = findParentNode(node.child, targetId);
if (path) {
return [{ id: node.id, label: node.label, child: path }];
}
}
}
return null;
}
const tree = [
// ...
];
const result = findParentNode(tree, 7);
console.log(result);
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容