Ich versuche, einen bestimmten Knoten in einem JSON-Objekt-Struktur zurückkehren, die wie folgtJavaScript rekursive Suche in JSON-Objekt
{
"id":"0",
"children":[
{
"id":"1",
"children":[...]
},
{
"id":"2",
"children":[...]
}
]
}
So sieht es eine baumartige Eltern-Kind-Beziehung. Jeder Knoten hat eine eindeutige ID. Ich versuche, einen bestimmten Knoten wie diese
function findNode(id, currentNode) {
if (id == currentNode.id) {
return currentNode;
} else {
currentNode.children.forEach(function (currentChild) {
findNode(id, currentChild);
});
}
}
ich die Suche nach findNode("10", rootNode)
zum Beispiel ausführen zu finden. Aber obwohl die Suche eine Übereinstimmung findet, gibt die Funktion immer undefined
zurück. Ich habe das schlechte Gefühl, dass die rekursive Funktion nach dem Auffinden der Übereinstimmung nicht aufhört und weiter läuft und schließlich undefined
zurückgibt, weil in den letzten rekursiven Ausführungen kein Rückkehrpunkt erreicht wird, aber ich bin mir nicht sicher, wie ich das beheben kann.
Bitte helfen!
da es Antwort ist, möchte ich nur darauf hinweisen, dass foreach-Schleife nicht in Javascript stoppen kann. Verwenden Sie foreach nicht im Algorithmus. – wayne
Warum führen Sie überhaupt eine Suche nach einem JSON-Objekt durch? Sie sollten vielleicht erwägen, die Suche an dem Ort durchzuführen, an dem das JSON-Objekt generiert wurde, hoffentlich die Datenbank. –
@ jmb.mage, denn in der realen Welt müssen Sie oft Aufgaben lösen, die keine idealen Bedingungen haben und deren Details außerhalb Ihrer Reichweite liegen. Dies ist einer von ihnen. – Dropout