JavaScript的遞歸搜索我試圖返回一個JSON對象結構,看起來像這樣在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。 – wayne
爲什麼您首先在JSON對象上執行搜索?你也許應該考慮在JSON對象生成的地方進行搜索,希望是數據庫。 –
@ jmb.mage因爲在現實世界中,你經常必須解決那些沒有理想環境,且細節遠不能實現的任務。這是其中之一。 – Dropout