Menapis Tatasusunan Objek dengan Tatasusunan Nilai Bersarang
Menapis tatasusunan objek berdasarkan nilai bersarang boleh menjadi cabaran biasa. Untuk mengatasinya, mari kita periksa biola yang disediakan:
Susun Input:
let arrayOfElements = [ { "name": "a", "subElements": [ {"surname": 1}, {"surname": 2} ] }, { "name": "b", "subElements": [ {"surname": 3}, {"surname": 1} ] }, { "name": "c", "subElements": [ {"surname": 2}, {"surname": 5} ] } ];
Output yang Diingini:
let filteredArray = [ { "name": "a", "subElements": [ {"surname": 1} ] }, { "name": "b", "subElements": [ {"surname": 1} ] } ];
Pendekatan Penapisan Asal:
let filteredArray = arrayOfElements.filter((element) => element.subElements.some((subElement) => subElement.surname === 1));
Walaupun formula ini menapis tatasusunan, ia mengembalikan objek dengan semua nama keluarga dan bukannya mengalih keluarnya.
Diperbaiki Kaedah Penapisan:
arrayOfElements.map((element) => { return {...element, subElements: element.subElements.filter((subElement) => subElement.surname === 1)} })
Kaedah ini menggunakan operator hamparan (...) untuk mencipta objek baharu bagi setiap elemen dalam tatasusunan. Di dalam objek baharu, sifat subElements ditapis untuk memasukkan hanya yang mempunyai nilai nama keluarga yang diingini (nama keluarga === 1).
Menggunakan pendekatan ini, anda boleh menapis tatasusunan dengan objek bersarang dalam sewenang-wenangnya dengan menggunakan berulang kali fungsi peta untuk mengakses dan menapis data yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Tatasusunan Objek Berdasarkan Tatasusunan Nilai Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!