【发布时间】:2018-04-25 15:03:46
【问题描述】:
我构建了一个简单的 Javascript 树视图,其中每个节点都有一个名称、一个子节点列表和一个 ID:
class Node {
constructor(name, childNodes, id) {
this.name = name;
this.childNodes = childNodes;
this.id = id;
}
}
我的目标是创建一个函数“getNodeById(parent, id)”,它返回具有给定 ID 的节点。我尝试过使用递归方法,但一定有错误:
function getNodeById(currentNode, id) {
if (currentNode.id === id) { console.log("found"); return currentNode; }
currentNode.children.forEach(child => {
console.log(child);
return getNodeById(child, id);
});
}
我的想法是,该函数将搜索 childNodes 并再次调用自己。当找到正确的节点时,它应该在 if 语句之后返回,然后在 foreach 循环中。该函数成功找到正确的节点,但它不会停止并返回该节点。这是调用 getNodeById(parent, 2); 时的输出
为什么“找到”后函数不退出?
【问题讨论】:
标签: javascript recursion