Masalah:
Diberikan tatasusunan objek dan penapis objek, kami menyasarkan untuk menapis elemen tatasusunan berdasarkan berbilang syarat yang dinyatakan dalam objek penapis. Walau bagaimanapun, pelaksanaan semasa menghadapi isu di mana berbilang elemen memenuhi hanya subset syarat disertakan dalam hasilnya.
Penyelesaian:
Isu timbul daripada penggunaan yang salah daripada gelung untuk (var i = 0; i < filter.length; i ) dalam fungsi penapisan. Memandangkan penapis ialah objek, ia tidak mempunyai sifat panjang dan gelung ini menjadi berlebihan.
Untuk menangani perkara ini, kita boleh lelaran terus ke atas sifat objek penapis dan menyemak kewujudan sifat pada setiap objek pengguna . Kod berikut menunjukkan pelaksanaan yang betul:
<code class="javascript">function filterUsers(users, filter) { var result = []; for (var prop in filter) { if (filter.hasOwnProperty(prop)) { users.forEach(function(user) { if (user[prop] === filter[prop]) { result.push(user); } }); } } return result; }</code>
Fungsi Penapis yang Diperbaiki:
Fungsi Penapis yang dipertingkatkan kini beralih kepada pengguna dan menyemak setiap sifat objek penapis untuk melihat sama ada ia sepadan dengan nilai harta pengguna yang sepadan. Hanya pengguna dengan nilai yang sepadan untuk semua sifat yang ditentukan disertakan dalam hasilnya.
Contoh:
<code class="javascript">var filter = { address: 'England', name: 'Mark', }; var users = [{ name: 'John', email: 'john@example.com', age: 25, address: 'USA', }, { name: 'Tom', email: 'tom@example.com', age: 35, address: 'England', }, { name: 'Mark', email: 'mark@example.com', age: 28, address: 'England', }, ]; var filteredUsers = filterUsers(users, filter); console.log(filteredUsers); // Output: [{ // name: 'Mark', // email: 'mark@example.com', // age: 28, // address: 'England', // }]</code>
Pelaksanaan ini memastikan bahawa hanya pengguna yang namanya Mark dan yang tinggal di England disertakan dalam keputusan, seperti yang ditentukan oleh syarat penapis.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Susunan Objek Berdasarkan Pelbagai Keadaan dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!