Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Menapis Tatasusunan Objek dengan Tatasusunan Berdasarkan Nilai Bersarang?

Bagaimana untuk Menapis Tatasusunan Objek dengan Tatasusunan Berdasarkan Nilai Bersarang?

DDD
DDDasal
2024-10-29 03:08:02219semak imbas

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

Menapis Tatasusunan Objek dengan Tatasusunan Berdasarkan Nilai Bersarang

Soalan: Bagaimanakah cara saya menapis tatasusunan objek berdasarkan nilai bersarang?

Input:

<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>

Output yang Diingini:

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

Percubaan Awal:

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

Isu: Pendekatan ini mengembalikan objek dengan semua nama keluarga dan bukannya memotongnya.

Penyelesaian:

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

Penjelasan:

  • Pendekatan ini menggunakan kaedah map() untuk mengulangi arrayOfElements.
  • Untuk setiap elemen, ia menyebarkan sifatnya ke dalam objek baharu.
  • Ia kemudian menggunakan penapis() pada tatasusunan subElements untuk mengekalkan hanya yang memenuhi syarat (nama keluarga === 1).
  • SubElements yang ditapis kemudiannya digunakan untuk mengatasi tatasusunan subElements asal.

Atas ialah kandungan terperinci Bagaimana untuk Menapis Tatasusunan Objek dengan Tatasusunan Berdasarkan Nilai Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn