Heim >Web-Frontend >js-Tutorial >Wie erstelle ich rekursiv eine hierarchische Eigenschaftenliste aus komplexen Objekten in JavaScript?
Rekursives Erstellen einer hierarchischen Eigenschaftenliste aus komplexen Objekten
In Situationen, in denen komplexe Objekte mehrere Unterobjekte und Eigenschaften mit unterschiedlichen Datentypen enthalten, Es besteht die Notwendigkeit, eine hierarchische Liste dieser Eigenschaften zu erstellen. Um dies zu erreichen, ist ein rekursiver Schleifenansatz unerlässlich.
Gegebenes Problem:
Ein Objekt wird mit der folgenden Struktur bereitgestellt:
<code class="javascript">var object = { aProperty: { aSetting1: 1, aSetting2: 2, aSetting3: 3, aSetting4: 4, aSetting5: 5 }, bProperty: { bSetting1: { bPropertySubSetting : true }, bSetting2: "bString" }, cProperty: { cSetting: "cString" } };</code>
Gewünschte Ausgabe:
Das Ziel besteht darin, eine Liste von Schlüsseln zu erstellen, die die Hierarchie des Objekts genau widerspiegelt:
aProperty.aSetting1 aProperty.aSetting2 aProperty.aSetting3 aProperty.aSetting4 aProperty.aSetting5 bProperty.bSetting1.bPropertySubSetting bProperty.bSetting2 cProperty.cSetting
Erste Lösung:
<code class="javascript">function iterate(obj) { for (var property in obj) { if (obj.hasOwnProperty(property)) { if (typeof obj[property] == "object") { iterate(obj[property]); } else { console.log(property + " " + obj[property]); } } } }</code>
Diese Funktion durchläuft das Objekt und gibt die Schlüssel aus, behält jedoch nicht die Hierarchie bei.
Rekursive Lösung:
Um die Hierarchie beizubehalten, können wir eine Stapelzeichenfolge verwalten, die den Pfad der aktuellen Eigenschaft darstellt. Wenn eine primitive Eigenschaft gefunden wird, wird der Pfad gedruckt. Bei verschachtelten Objekten wird der Stapel aktualisiert und die Rekursion fortgesetzt.
<code class="javascript">function iterate(obj, stack) { for (var property in obj) { if (obj.hasOwnProperty(property)) { if (typeof obj[property] == "object") { iterate(obj[property], stack + '.' + property); } else { console.log(property + " " + obj[property]); $('#output').append($("<div/>").text(stack + '.' + property)) } } } } iterate(object, '');</code>
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie erstelle ich rekursiv eine hierarchische Eigenschaftenliste aus komplexen Objekten in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!