【发布时间】:2017-09-26 11:51:59
【问题描述】:
我有对象树,但我找不到具体对象 ID 的所有父项。想象一下,我需要为 id = 5 的对象的每个父对象添加一些新字段。有人可以帮助通过树进行递归循环
var tree = {
id: 1,
children: [
{
id: 3,
parentId: 1,
children: [
{
id: 5,
parentId: 3,
children: []
}
]
}
]
}
console.log(searchTree (tree, 5));
function searchTree (tree, nodeId){
for (let i = 0; i < tree.length; i++){
if (tree[i].id == nodeId) {
// it's parent
console.log(tree[i].id);
tree[i].newField = true;
if (tree[i].parentId != null) {
searchTree(tree, tree[i].parentId);
}
}
}
}
【问题讨论】:
-
你可能会更好地创建一张 id 地图
-
请通过删除语法错误(
....等)、将初始对象分配给变量等来使您的 sn-p 可运行。 -
我已将开始帖子编辑为正确的格式。
-
您说您必须向“ID 为 5 的节点的每个父节点”添加一个新字段,但在您的示例中,您正在向“ID 为 5 的节点”添加一个新字段...我不明白。您需要找到“节点 5”,然后将字段添加到其父节点?还是对它的孩子们是父母?我怎么知道一个节点是否是父节点(在您的示例中,我看到所有节点都是父节点,因为每个节点都有一个子属性)?
标签: javascript recursion tree