javascript filter array multi condition
2022-08-30 04:37:22
我想简化一个对象数组。让我们假设我有以下数组:
var users = [{
name: 'John',
email: 'johnson@mail.com',
age: 25,
address: 'USA'
},
{
name: 'Tom',
email: 'tom@mail.com',
age: 35,
address: 'England'
},
{
name: 'Mark',
email: 'mark@mail.com',
age: 28,
address: 'England'
}];
和过滤器对象:
var filter = {address: 'England', name: 'Mark'};
例如,我需要按地址和名称过滤所有用户,所以我会遍历过滤器对象属性并检查出来:
function filterUsers (users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
//at the first iteration prop will be address
for (var i = 0; i < filter.length; i++) {
if (users[i][prop] === filter[prop]) {
result.push(users[i]);
}
}
}
}
return result;
}
所以在第一次迭代时会等于两个用户将被添加到数组结果(名称为Tom和Mark),但是在第二次迭代时将等于只有最后一个用户应该被添加到数组结果中,但我最终在数组中有两个元素。prop - address
'England'
prop name
Mark
我有一点想法,为什么它会发生,但仍然坚持它,找不到一个好的解决方案来修复它。任何帮助都是可观的。谢谢。