Tôi muốn đơn giản hóa một mảng đối tượng. Giả sử rằng tôi có mảng sau:mảng lọc javascript nhiều điều kiện
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'
}];
Và bộ lọc đối tượng:
var filter = {address: 'England', name: 'Mark'};
Ví dụ tôi cần phải lọc tất cả người dùng theo địa chỉ và tên, vì vậy tôi làm vòng lặp thông qua thuộc tính đối tượng bộ lọc và kiểm tra xem nó ra:
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;
}
Vì vậy, trong quá trình lặp đầu tiên khi prop - address
sẽ bằng 'England'
hai người dùng sẽ được bổ sung vào kết quả mảng (với tên Tom và Mark), nhưng trên lần lặp thứ hai khi prop name
sẽ bằng Mark
chỉ người dùng cuối cùng mới được thêm vào kết quả mảng, nhưng tôi kết thúc với hai phần tử trong mảng.
Tôi đã có một ý tưởng nhỏ là tại sao nó xảy ra nhưng vẫn bị mắc kẹt trên đó và không thể tìm thấy một giải pháp tốt để sửa chữa nó. Bất kỳ trợ giúp nào đều đáng được đánh giá cao. Cảm ơn.
tại sao bạn lặp qua sử dụng 2 lần? – webduvet