Menapis Tatasusunan Objek dengan Tatasusunan Objek Lain
Masalah ini melibatkan penapisan tatasusunan objek (myArray) menggunakan tatasusunan objek ( myFilter). Objektifnya adalah untuk mencipta tatasusunan baharu (myArrayFiltered) yang mengandungi hanya elemen dalam myArray yang sepadan dengan elemen yang sepadan dalam myFilter berdasarkan userid dan projectid.
Pertimbangkan contoh berikut:
myArray = [ { userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1" }, { userid: "102", projectid: "12", rowid: "2" }, { userid: "103", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" } ]; myFilter = [ { userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103", projectid: "11" } ];
Hasil yang dijangkakan ialah:
myArrayFiltered = [ { userid: "101", projectid: "11", rowid: "1" }, { userid: "102", projectid: "12", rowid: "2" } ];
Untuk menyelesaikan tugasan ini, kita boleh menggunakan penapis dan beberapa kaedah tatasusunan. Kaedah ini tersedia secara meluas dalam penyemak imbas moden, dan polyfill wujud untuk penyemak imbas lama.
Pelaksanaan melibatkan penapisan myArray menggunakan kaedah penapis, di mana setiap elemen myFilter digunakan untuk membandingkan dengan elemen myArray. Kaedah sesetengah kemudiannya digunakan untuk menyemak sama ada terdapat sekurang-kurangnya satu padanan antara id pengguna dan sifat unjuran unsur semasa dalam myArray dan elemen yang sepadan dalam myFilter. Jika terdapat padanan, elemen semasa disertakan dalam hasil yang ditapis.
Berikut ialah coretan kod contoh yang menunjukkan pendekatan ini:
<code class="javascript">const myArray = [{ userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1"}, { userid: "102", projectid: "12", rowid: "2" }, { userid: "103", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" }]; const myFilter = [{ userid: "101", projectid: "11" }, { userid: "102", projectid: "12" }, { userid: "103", projectid: "11"}]; const myArrayFiltered = myArray.filter((el) => { return myFilter.some((f) => { return f.userid === el.userid && f.projectid === el.projectid; }); }); console.log(myArrayFiltered);</code>
Kod ini akan mengeluarkan hasil yang dijangkakan, memberikan tatasusunan ditapis yang mengandungi hanya objek daripada myArray yang sepadan dengan kriteria yang dinyatakan dalam myFilter.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menapis tatasusunan objek berdasarkan sifat yang sepadan dalam tatasusunan lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!