JavaScript の複数のフィルター条件に基づいてオブジェクトの配列を簡素化する
質問:
方法JavaScript で複数のフィルター条件に基づいてオブジェクトの配列を単純化できますか?たとえば、次の配列を使用します:
var users = [ { name: 'John', email: '[email protected]', age: 25, address: 'USA' }, { name: 'Tom', email: '[email protected]', age: 35, address: 'England' }, { name: 'Mark', email: '[email protected]', age: 28, address: 'England' } ];
フィルター オブジェクト:
var filter = { address: 'England', name: 'Mark' };
アドレスと名前の両方ですべてのユーザーをフィルターしたいとします。現在、私の関数は、最初の反復では一致するアドレスを持つすべてのユーザーを追加し、2 番目の反復では一致する名前を持つ最後のユーザーのみを追加します。ただし、両方の条件で同時にフィルタリングする必要があります。
回答:
複数の条件に基づいてオブジェクトの配列をフィルタリングするには、次のアプローチを利用できます。
users = users.filter(function(item) { for (var key in filter) { if (item[key] === undefined || item[key] != filter[key]) return false; } return true; });
このコードは、オブジェクトの配列とフィルター オブジェクトの両方を反復処理し、配列内の各オブジェクトがフィルターで指定されたすべての条件に一致することを確認します。 item[key] と filter[key] の比較では、オブジェクト item のプロパティ キーの値が filter オブジェクトの対応する値と一致するかどうかがチェックされます。いずれかの条件が満たされない場合、フィルター関数は false を返し、そのオブジェクトをフィルター結果から除外します。それ以外の場合は true を返し、オブジェクトがすべてのフィルタ条件を満たしていることを示します。
このアプローチを適用すると、複数の条件に基づいてオブジェクトの配列を効果的にフィルタリングでき、すべての条件を満たすオブジェクトのみを確実にフィルタリングできます。結果には含まれます。
以上がJavaScript で複数の条件でオブジェクトの配列をフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。