Bagaimana untuk Menapis Tatasusunan JavaScript Objek Berdasarkan Berbilang Keadaan?

Barbara Streisand
Lepaskan: 2024-10-30 04:27:28
asal
991 orang telah melayarinya

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

Menapis Tatasusunan dalam JavaScript Berdasarkan Berbilang Syarat

Pernyataan Masalah

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.

Penyelesaian Cadangan

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;
}
Salin selepas log masuk

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>
Salin selepas log masuk

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.

Contoh Penggunaan

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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!