Heim >Web-Frontend >js-Tutorial >Wie filtere ich ein Array von Objekten mit Arrays basierend auf verschachtelten Werten?

Wie filtere ich ein Array von Objekten mit Arrays basierend auf verschachtelten Werten?

DDD
DDDOriginal
2024-10-29 03:08:02220Durchsuche

How to Filter an Array of Objects with Arrays Based on Nested Value?

Array von Objekten mit Arrays basierend auf verschachtelten Werten filtern

Frage: Wie filtere ich ein Array von Objekten basierend auf einem verschachtelten Wert?

Eingabe:

<code class="javascript">let arrayOfElements = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1},
            {"surname": 2}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 3},
            {"surname": 1}
        ]
    },
    {
        "name": "c",
        "subElements": [
            {"surname": 2},
            {"surname": 5}
        ]
    }
];</code>

Gewünschte Ausgabe:

<code class="javascript">let filteredArray = [
    {
        "name": "a",
        "subElements": [
            {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
            {"surname": 1}
        ]
    }
];</code>

Erster Versuch:

<code class="javascript">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>

Problem: Dieser Ansatz gibt Objekte mit allen Nachnamen zurück, anstatt sie wegzuschneiden.

Lösung:

<code class="javascript">arrayOfElements.map((element) => {
    return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>

Erklärung:

  • Dieser Ansatz verwendet die Methode map(), um über das arrayOfElements zu iterieren.
  • Für jedes Element werden seine Eigenschaften in a verteilt neues Objekt.
  • Dann wird filter() für das subElements-Array verwendet, um nur diejenigen beizubehalten, die die Bedingung erfüllen (Nachname === 1).
  • Die gefilterten subElements werden dann verwendet, um das zu überschreiben ursprüngliches subElements-Array.

Das obige ist der detaillierte Inhalt vonWie filtere ich ein Array von Objekten mit Arrays basierend auf verschachtelten Werten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn