首頁 > web前端 > js教程 > 主體

如何根據多個條件過濾 JavaScript 物件數組?

Barbara Streisand
發布: 2024-10-30 04:27:28
原創
991 人瀏覽過

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

基於多個條件過濾JavaScript 中的數組

問題陳述

給定一個對象數組和一個過濾器對象,目標是過濾和根據篩選器中指定的多個條件簡化陣列。但是,當過濾器包含多個屬性時,會出現一個特定問題。

建議的解決方案

考慮以下程式碼段:

<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;
}
登入後複製

在建議的解決方案中,會出現問題當過濾器包含多個屬性時。具體來說,在第二次迭代期間,users[i][prop] 和 filter[prop] 之間的比較不正確。為了解決這個問題,我們可以將程式碼修改為以下內容:

<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>
登入後複製

在此版本中,我們利用陣列內建的篩選方法來動態套用篩選條件。這可確保結果中僅包含滿足所有指定條件的物件。

用法範例

使用更新的解決方案,過濾過程將按預期工作:

<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>
登入後複製

此解決方案解決了多個過濾條件未正確應用的問題,確保產生的過濾數組準確反映指定的條件。

以上是如何根據多個條件過濾 JavaScript 物件數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!