以下是一个示例代码,演示了如何按照多个值来过滤对象数组:
const data = [
{ name: 'John', age: 25, gender: 'male' },
{ name: 'Jane', age: 30, gender: 'female' },
{ name: 'Bob', age: 20, gender: 'male' },
{ name: 'Alice', age: 35, gender: 'female' }
];
function filterArrayByValues(array, filters) {
return array.filter((item) => {
for (let key in filters) {
if (item[key] !== filters[key]) {
return false;
}
}
return true;
});
}
const filters = { age: 25, gender: 'male' };
const filteredArray = filterArrayByValues(data, filters);
console.log(filteredArray);
运行以上代码,输出结果为:
[
{ name: 'John', age: 25, gender: 'male' }
]
在上面的代码中,我们定义了一个filterArrayByValues
函数,它接受一个对象数组和一个包含过滤条件的对象作为参数。该函数使用Array.filter()
方法对数组进行过滤,并返回符合所有过滤条件的对象。在内部的过滤函数中,我们使用一个for...in
循环来遍历过滤条件对象的键,并检查每个键对应的值是否与数组中的对象的对应属性值匹配。如果有任何一个属性值不匹配,就返回false
,表示该对象应该被过滤掉。如果遍历结束后没有返回false
,则表示该对象符合所有过滤条件,应该被保留在新的过滤后的数组中。最后,我们可以调用filterArrayByValues
函数,并传入一个包含过滤条件的对象,来过滤data
数组,并将结果存储在filteredArray
变量中。
上一篇:按多个值分组对象并合并重复项
下一篇:按多个值和多个列进行过滤