ホームページ > ウェブフロントエンド > jsチュートリアル > 複数の条件に基づいてオブジェクトの JavaScript 配列をフィルタリングする方法

複数の条件に基づいてオブジェクトの JavaScript 配列をフィルタリングする方法

Barbara Streisand
リリース: 2024-10-30 04:27:28
オリジナル
1086 人が閲覧しました

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;
}
ログイン後にコピー

提案された解決策では、問題が発生します。フィルターに複数のプロパティが含まれている場合。具体的には、2 回目の反復中、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート