【发布时间】:2014-04-08 23:27:43
【问题描述】:
我正在尝试返回 JSON 对象结构中的特定节点,如下所示
{
"id":"0",
"children":[
{
"id":"1",
"children":[...]
},
{
"id":"2",
"children":[...]
}
]
}
所以这是一个树状的父子关系。每个节点都有一个唯一的ID。 我正在尝试找到像这样的特定 节点
function findNode(id, currentNode) {
if (id == currentNode.id) {
return currentNode;
} else {
currentNode.children.forEach(function (currentChild) {
findNode(id, currentChild);
});
}
}
我通过findNode("10", rootNode) 执行搜索。但即使搜索找到匹配项,该函数也始终返回 undefined。我有一种不好的感觉,递归函数在找到匹配项后并没有停止并继续运行 finally 返回 undefined 因为在后面的递归执行中它没有到达返回点,但我不知道如何修复这个。
请帮忙!
【问题讨论】:
-
既然是答案,我只想指出 foreach 循环不能在 javascript 中停止。不要在算法中使用 foreach。
-
为什么首先要对 JSON 对象执行搜索?您也许应该考虑在生成 JSON 对象的地方进行搜索,希望是数据库。
-
@jmb.mage 因为在现实世界中,您经常需要解决没有理想环境且细节无法触及的任务。这是其中之一。
标签: javascript json recursion