Heim > Artikel > Web-Frontend > Wie filtere ich ein Array von Objekten basierend auf einem Array mit verschachtelten Werten?
Array von Objekten mit Arrays verschachtelter Werte filtern
Das Filtern eines Arrays von Objekten basierend auf einem verschachtelten Wert kann eine häufige Herausforderung sein. Um dies zu beheben, untersuchen wir die bereitgestellte Geige:
Eingabearray:
let arrayOfElements = [ { "name": "a", "subElements": [ {"surname": 1}, {"surname": 2} ] }, { "name": "b", "subElements": [ {"surname": 3}, {"surname": 1} ] }, { "name": "c", "subElements": [ {"surname": 2}, {"surname": 5} ] } ];
Gewünschte Ausgabe:
let filteredArray = [ { "name": "a", "subElements": [ {"surname": 1} ] }, { "name": "b", "subElements": [ {"surname": 1} ] } ];
Ursprünglicher Filteransatz:
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Diese Formel filtert zwar das Array, gibt jedoch Objekte mit allen Nachnamen zurück, anstatt sie zu entfernen.
Verbessert Filtermethode:
arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
Diese Methode verwendet den Spread-Operator (...), um für jedes Element im Array ein neues Objekt zu erstellen. Innerhalb des neuen Objekts wird die subElements-Eigenschaft gefiltert, um nur diejenigen mit dem gewünschten Nachnamenwert (Nachname === 1) einzuschließen.
Mit diesem Ansatz können Sie Arrays mit beliebig tief verschachtelten Objekten filtern, indem Sie iterativ anwenden Kartenfunktion zum Zugriff und Filtern der gewünschten Daten.
Das obige ist der detaillierte Inhalt vonWie filtere ich ein Array von Objekten basierend auf einem Array mit verschachtelten Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!