問題:
オブジェクトの配列とフィルターが与えられた場合オブジェクトでは、フィルター オブジェクトで指定された複数の条件に基づいて配列要素をフィルター処理することを目的としています。ただし、現在の実装では、条件のサブセットのみを満たす複数の要素が結果に含まれるという問題が発生します。
解決策:
この問題は、誤った使用法から発生します。フィルタリング関数内の for (var i = 0; i これに対処するには、フィルター オブジェクトのプロパティを直接反復処理し、各ユーザー オブジェクトのプロパティの存在を確認します。 。次のコードは正しい実装を示しています: 改良されたフィルター関数: 改良された filterUsers 関数はユーザーを反復処理し、フィルター オブジェクトの各プロパティをチェックするようになりました。ユーザーの対応するプロパティ値と一致するかどうかを確認します。指定されたすべてのプロパティの値が一致するユーザーのみが結果に含まれます。 例: この実装により、Mark という名前のユーザーのみが結果に含まれます。フィルター条件で指定されたとおり、イギリスに住んでいる人が結果に含まれます。<code class="javascript">function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
users.forEach(function(user) {
if (user[prop] === filter[prop]) {
result.push(user);
}
});
}
}
return result;
}</code>
<code class="javascript">var filter = {
address: 'England',
name: 'Mark',
};
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 filteredUsers = filterUsers(users, filter);
console.log(filteredUsers);
// Output: [{
// name: 'Mark',
// email: 'mark@example.com',
// age: 28,
// address: 'England',
// }]</code>
以上がJavaScript で複数の条件に基づいてオブジェクトの配列をフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。