Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Menapis Objek Bersarang dalam Tatasusunan JavaScript dan Simpan Elemen Padanan Sahaja?

Bagaimana untuk Menapis Objek Bersarang dalam Tatasusunan JavaScript dan Simpan Elemen Padanan Sahaja?

Barbara Streisand
Lepaskan: 2024-10-28 16:10:08
asal
875 orang telah melayarinya

How to Filter Nested Objects in JavaScript Arrays and Keep Only Matching Elements?

Menapis Tatasusunan berdasarkan Objek Bersarang

Dalam JavaScript, anda mungkin menghadapi senario di mana anda perlu menapis tatasusunan objek berdasarkan nilai hartanah bersarang. Untuk mencapai matlamat ini, anda boleh memanfaatkan teknik penapisan yang berkuasa.

Pertimbangkan contoh yang diberikan dalam soalan anda, di mana matlamatnya adalah untuk menapis tatasusunan elemen berdasarkan nilai nama keluarga tertentu dalam tatasusunan "subElements" bersarangnya. Tatasusunan input ditakrifkan seperti berikut:

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

Untuk menapis tatasusunan ini dan mengambil hanya elemen yang tatasusunan "subElements" mengandungi objek dengan "nama keluarga" ditetapkan kepada 1, anda boleh menggunakan gabungan " penapis" dan kaedah "beberapa":

<code class="js">let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));</code>
Salin selepas log masuk

Walau bagaimanapun, isu dengan pendekatan ini ialah ia mengembalikan objek dengan semua "subElement" mereka, termasuk objek yang tidak sepadan dengan kriteria penapis. Untuk menyelesaikan masalah ini, anda boleh menggunakan fungsi "peta" bersama-sama dengan operator spread:

<code class="js">filteredArray = arrayOfElements.map((element) => {
  return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)}
})</code>
Salin selepas log masuk

Di sini, operator spread (iaitu, "...element") digunakan untuk mencipta objek baharu berasaskan pada "elemen" asal sambil mengatasi sifat "subElements"nya dengan hasil yang ditapis. Pendekatan ini membolehkan anda menapis "subElements" yang tidak diingini sambil mengekalkan struktur tatasusunan asal. "FilteredArray" yang terhasil akan mengandungi objek yang dikehendaki dengan "subElements" mereka ditapis berdasarkan kriteria "nama keluarga":

<code class="js">[
    {
        "name": "a",
        "subElements": [
           {"surname": 1}
        ]
    },
    {
        "name": "b",
        "subElements": [
           {"surname": 1}
        ]
    }
]</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menapis Objek Bersarang dalam Tatasusunan JavaScript dan Simpan Elemen Padanan Sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan