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

Patricia Arquette
リリース: 2024-10-27 07:28:28
オリジナル
249 人が閲覧しました

How to Efficiently Filter JavaScript Objects Based on Multiple Conditions?

複数の条件を使用した JavaScript での複雑なオブジェクト フィルタリングの簡素化

複数の条件に基づいてオブジェクトの配列をフィルタリングする必要性を考えてみましょう。ユーザー配列とフィルター オブジェクトが与えられた場合、タスクは特定のプロパティに基づいてユーザーをフィルター処理することです。

初期アプローチ:

反復処理を行う初期フィルター関数が実装されています。フィルターのプロパティを調べて、各ユーザーのプロパティをチェックします。ただし、このアプローチでは重複した一致が発生する可能性があります。

改善された解決策:

この問題に対処するために、次のように修正されたフィルター関数を実装できます:

<code class="javascript">users = users.filter(function(item) {
  for (var key in filter) {
    if (item[key] === undefined || item[key] != filter[key])
      return false;
  }
  return true;
});</code>
ログイン後にコピー

説明:

この関数は次のように動作します:

  • 元の配列をフィルター処理して新しい配列を作成します。
  • 元の配列内のユーザーごとに、フィルター オブジェクトで指定されたすべての条件を満たしているかどうかがチェックされます。
  • ユーザーが条件を満たさない場合、そのユーザーはフィルターされた結果から削除されます。

使用例:

次の例を考えてみましょう:

<code class="javascript">var users = [{
    name: 'John',
    email: '[email&#160;protected]',
    age: 25,
    address: 'USA'
  },
  {
    name: 'Tom',
    email: '[email&#160;protected]',
    age: 35,
    address: 'England'
  },
  {
    name: 'Mark',
    email: '[email&#160;protected]',
    age: 28,
    address: 'England'
  }
];

var filter = {
  address: 'England',
  name: 'Mark'
};

console.log(users.filter(function(item) {
  for (var key in filter) {
    if (item[key] === undefined || item[key] != filter[key])
      return false;
  }
  return true;
}));</code>
ログイン後にコピー

出力:

[
  {
    name: 'Mark',
    email: '[email&#160;protected]',
    age: 28,
    address: 'England'
  }
]
ログイン後にコピー

この改訂されたフィルターは、効果的に結合します。複数の条件を使用して、指定した基準に基づいてオブジェクトをフィルタリングします。

以上が複数の条件に基づいて JavaScript オブジェクトを効率的にフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!