Wie kann ich die Suche rekursiv ein Objekt-Baum und zurück, das passende Objekt basierend auf einem Schlüssel/Wert mit JavaScript/Prototype 1.7
Habe ich eine verschachtelte Objekt-Daten und ich suchen will, und auch wieder das passende Objekt anhand der id.
var data = [{id: 0, name: 'Template 0', subComponents:[
{id: 1, name: 'Template 1', subItems:[
{id: 2, name: 'Template 2', subComponents:[{id: 3, name: 'Template 3'}], subItems: [{id: 4, name: 'Template 4'}]}
]}
]}
];
So, ich möchte so etwas wie dies tun
getObjectByKeyValue({id: 3})
haben und Sie es zurück
{id: 3, name: 'Template 3'}
Es ist irgendwie bekam getan werden, generisch, weil ich Unterpositionen, UND Unterkomponenten, die könnte jeden haben Kinder.
Habe ich versucht, dieses mithilfe von Prototype 1.7 und kein Glück - ich denke, das gerade durchsucht ein array, und nicht einen Baum mit den Unterpunkten:
data.find(function(s){return s.id == 4;})
Vielen Dank im Voraus!!!!!!
InformationsquelleAutor der Frage Devin McQueeney | 2011-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich ging einen etwas anderen Weg und machte die
findKey
Methode ein Objekt protype:Was Sie nennen würde-direkt auf das Daten-Objekt, übergibt die Schlüssel/Wert-Sie suchen:
Beachten Sie, dass diese Funktion ermöglicht es Ihnen, zu finden, ein Objekt auf eine beliebige Taste:
InformationsquelleAutor der Antwort mVChr
Nicht die beste und Letzte Lösung.
Aber bekommen Sie einen Anfang für das, was Sie suchen...
InformationsquelleAutor der Antwort Vishwanath
Bitte siehe meine Lösung unter oder http://jsfiddle.net/8Y6zq/:
In dieser Implementierung können wir die Suche nach SCHLÜSSEL-oder WAHLSCHALTER (zB.
"<paren_key>.<child_key_1>.<child_key_2>. ... <child_key_N>"
)InformationsquelleAutor der Antwort ebaranov
In den Fall, Sie wirklich brauchen, eine Suche, die durch Ihre Baum-Daten-alle Ergebnisse zurückgegeben werden (keine eindeutige Schlüssel), hier ist eine etwas modifizierte version von mVChr Antwort:
InformationsquelleAutor der Antwort offspringer