Tief verschachtelte Objekte in Arrays finden
Stellen Sie sich ein komplexes verschachteltes Objekt wie das folgende vor:
[ { "title": "some title", "channel_id": "123we", "options": [ { "channel_id": "abc", "image": "http://asdasd.com/all-inclusive-block-img.jpg", "title": "All-Inclusive", "options": [ { "channel_id": "dsa2", "title": "Some Recommends", "options": [ { "image": "http://www.asdasd.com", "title": "Sandals", "id": 1, "content": {} } ] } ] } ] } ]
Sie möchten das Objekt mit der ID 1 abrufen. Anstatt manuell durch die einzelnen Ebenen zu navigieren, erkunden wir eine bessere Lösung Ansatz.
Rekursion zur Rettung
Rekursion, bei der sich eine Funktion selbst aufruft, bietet eine elegante Lösung. Die folgende Funktion durchläuft das verschachtelte Objekt:
function getObject(theObject) { var result = null; if (theObject instanceof Array) { for (var i = 0; i < theObject.length; i++) { result = getObject(theObject[i]); if (result) { break; } } } else { for (var prop in theObject) { console.log(prop + ': ' + theObject[prop]); if (prop == 'id') { if (theObject[prop] == 1) { return theObject; } } if (theObject[prop] instanceof Object || theObject[prop] instanceof Array) { result = getObject(theObject[prop]); if (result) { break; } } } } return result; }
Diese Funktion verarbeitet Arrays und Eigenschaftsarrays und durchläuft das gesamte Objekt, um die Übereinstimmung zu finden.
Demo und Fazit
Hier ist eine aktualisierte jsFiddle, die die Funktion demonstriert: https://jsfiddle.net/FM3qu/7/.
Zusammenfassend lässt sich sagen, dass die Rekursion eine effiziente Möglichkeit bietet, tief verschachtelte Objekte zu durchlaufen und bestimmte Objekte basierend auf Kriterien abzurufen. Durch die Nutzung der Rekursion können wir umständliche manuelle Navigation vermeiden und komplexe verschachtelte Strukturen problemlos verarbeiten.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient auf ein tief verschachteltes Objekt innerhalb einer komplexen Array-Struktur zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!