Memandangkan tatasusunan objek dan objek penapis, matlamatnya adalah untuk menapis dan mudahkan tatasusunan berdasarkan berbilang syarat yang dinyatakan dalam penapis. Walau bagaimanapun, isu khusus timbul apabila penapis mengandungi berbilang sifat.
Pertimbangkan segmen kod berikut:
<code class="js">function filterUsers(users, filter) { var result = []; for (var prop in filter) { if (filter.hasOwnProperty(prop)) { // Iterate over the array for (var i = 0; i < filter.length; i++) { if (users[i][prop] === filter[prop]) { result.push(users[i]); } } } } return result; }
Dalam penyelesaian yang dicadangkan, masalah berlaku apabila penapis mengandungi berbilang sifat. Khususnya, semasa lelaran kedua, perbandingan antara pengguna[i][prop] dan penapis[prop] adalah tidak betul. Untuk membetulkannya, kami boleh mengubah suai kod kepada yang berikut:
<code class="js">function filterUsers(users, filter) { var result = []; for (var prop in filter) { if (filter.hasOwnProperty(prop)) { // Apply filter on the array users = users.filter((user) => user[prop] === filter[prop]); } } return result; }</code>
Dalam versi ini, kami menggunakan kaedah penapis terbina dalam tatasusunan untuk menggunakan keadaan penapis secara dinamik. Ini memastikan bahawa hanya objek yang memenuhi semua syarat yang ditetapkan disertakan dalam hasilnya.
Dengan penyelesaian yang dikemas kini, proses penapisan akan berfungsi seperti yang diharapkan:
<code class="js">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 filter = { address: 'England', name: 'Mark' }; var filteredUsers = filterUsers(users, filter); console.log(filteredUsers); // Output: [{ name: 'Mark', email: 'mark@example.com', age: 28, address: 'England' }]</code>
Penyelesaian ini menangani isu di mana berbilang syarat penapis tidak digunakan dengan betul, memastikan tatasusunan ditapis yang terhasil mencerminkan kriteria yang ditentukan dengan tepat.
Atas ialah kandungan terperinci Bagaimana untuk Menapis Tatasusunan JavaScript Objek Berdasarkan Berbilang Keadaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!