Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menapis Tatasusunan JavaScript Objek Berdasarkan Berbilang Keadaan?

Bagaimana untuk Menapis Tatasusunan JavaScript Objek Berdasarkan Berbilang Keadaan?

Barbara Streisand
Barbara Streisandasal
2024-10-30 04:27:28992semak imbas

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;
}

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.

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>

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!

Kenyataan:
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