Heim >Web-Frontend >js-Tutorial >Wie filtere ich verschachtelte Arrays in Objekten basierend auf einem bestimmten Wert?
Array von Objekten mit Arrays basierend auf verschachtelten Werten filtern
Sie versuchen, ein Array von Objekten basierend auf einem darin verschachtelten Wert zu filtern Objekte. Das Ziel besteht darin, ein neues Array zu erstellen, das nur die Objekte mit einem bestimmten Wert für eine verschachtelte Eigenschaft enthält.
Um dies zu erreichen, haben Sie die folgende Formel verwendet:
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Diese Formel Filtert die Objekte aus dem ursprünglichen Array heraus, die mindestens ein Unterelement mit einer Nachnameneigenschaft von 1 haben. Die Ausgabe entspricht jedoch nicht ganz Ihren Erwartungen. Anstatt die Unterelemente zu entfernen, die nicht der Filterbedingung entsprechen, werden Objekte mit allen Unterelementen zurückgegeben, einschließlich derjenigen, die nicht übereinstimmen.
Um die Filterung zu verbessern, können Sie eine Zuordnungsfunktion verwenden anstelle einer Filterfunktion. Auf diese Weise können Sie ein neues Array erstellen, indem Sie jedes Element im ursprünglichen Array transformieren. Das transformierte Element enthält nur die Unterelemente, die der Filterbedingung entsprechen.
Hier ist eine verbesserte Formel mit der Zuordnungsfunktion:
let filteredArray = arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
In dieser verbesserten Formel:
Diese verbesserte Formel gibt ein Array zurück, das nur die Objekte enthält, die mindestens ein Unterelement mit einem Nachnamen haben Eigenschaft gleich 1, und jedes Objekt enthält nur die passenden Unterelemente.
Das obige ist der detaillierte Inhalt vonWie filtere ich verschachtelte Arrays in Objekten basierend auf einem bestimmten Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!