我在寫一些Javascript代碼。我有一個JSON對象,看起來像這樣(間距修改可讀性):如何做這個Javascript/JSON樹的遞歸搜索?
var myNodes = [
{
id: 4,
children: [
{
id: 1,
children: [
]
},
{
id: 3,
children: [
]
}
]
},
{
id: 2,
children: [
]
},
{
id: 6,
children: [
{
id: 5,
children: [
]
}
]
}
]
每個節點在這個數據結構ID是唯一的。 然而,除此之外,有ID號在所有之中沒有固定的或已知的關係。 每個級別的兒童人數沒有限制。
如果我想搜索這棵樹,並用ID == 6.我該怎麼辦呢返回節點? 我寫了下面的代碼,它遇到的第一個葉節點,整個算法返回false,這顯然是不對的。然而之後。我只是想做一個基本的深度優先搜索。但我不想爲這些數據添加額外的字段,並像我在Web上的一些DFS實現中看到的那樣「標記」這些節點。
myClass.prototype.nodeSearch = function nodeSearch(treeNodes, searchID){
for (var nodeIdx = 0; nodeIdx <= treeNodes.length-1; nodeIdx++)
{
console.log("Comparing treeNodes element with ID==" + treeNodes[nodeIdx].id + " to SearchID==" + searchID);
if (treeNodes[nodeIdx].id == searchID)
{
console.log("Match!");
return treeNodes[nodeIdx];
}
else
{
console.log("No Match! Trying " + treeNodes[nodeIdx].children.length + " Children of Node ID#" + treeNodes[nodeIdx].id);
return this.nodeSearch(treeNodes[nodeIdx].children, searchID);
}
}
console.log("Done trying " + treeNodes.length + " children. Returning False");
return false;
};
是的,我相信我發現後,我的戰後初期的根本原因。你能看到我的編輯嗎? – JLRishe
工作!謝謝!! –