给定一个对象数组和一个过滤器对象,目标是过滤和根据过滤器中指定的多个条件简化数组。但是,当过滤器包含多个属性时,会出现一个特定问题。
考虑以下代码段:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Iterate over the array
for (var i = 0; i 在建议的解决方案中,当过滤器包含多个属性时会出现问题。具体来说,在第二次迭代期间,users[i][prop] 和 filter[prop] 之间的比较不正确。为了解决这个问题,我们可以将代码修改为以下内容:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Apply filter on the array
users = users.filter((user) => user[prop] === filter[prop]);
}
}
return result;
}
在此版本中,我们利用数组内置的过滤方法来动态应用过滤条件。这可确保结果中仅包含满足所有指定条件的对象。
用法示例
使用更新的解决方案,过滤过程将按预期工作:
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'
};
var filteredUsers = filterUsers(users, filter);
console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]
这个解决方案解决了多个过滤条件不适用的问题正确应用,确保生成的过滤数组准确反映指定的条件。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3