JavaScript 数组过滤:使用多个属性筛选数据
使用数组的 'filter' 方法来实现多个属性的筛选。首先定义一个包含筛选条件的对象,然后使用 'filter' 方法筛选符合条件的元素。
例如,假设有一个数组 'data' 包含多个对象,每个对象包含 'name' 和 'age' 两个属性,现在需要筛选出年龄小于 30 岁且名字包含 'John' 的对象,可以使用如下代码:
const data = [
{ name: 'John Smith', age: 25 },
{ name: 'Jane Doe', age: 35 },
{ name: 'John Doe', age: 28 },
{ name: 'Alice Cooper', age: 45 }
];
const filterObj = { name: 'John', age: 30 };
const filteredData = data.filter(item => {
return Object.keys(filterObj).every(key => {
return item[key].toString().toLowerCase().includes(filterObj[key].toString().toLowerCase());
});
});
console.log(filteredData);
输出结果为:
[
{ name: 'John Smith', age: 25 },
{ name: 'John Doe', age: 28 }
]
在上面的代码中,'filterObj' 对象定义了筛选条件,'filteredData' 变量存储筛选后的结果。'filter' 方法传入一个回调函数,用于对每个元素进行筛选。'Object.keys(filterObj).every' 方法用于判断该元素是否满足所有的筛选条件,其中 'every' 方法会对对象的所有属性进行遍历,只有所有属性都满足条件时才会返回 'true'。如果某个属性不满足条件,则会返回 'false',并跳过后续属性的判断。在回调函数中,'item[key]' 表示当前元素的属性值,使用 'toString' 方法将其转换为字符串,并使用 'toLowerCase' 方法将其转换为小写字母,以便进行不区分大小写的比较。最后使用 'includes' 方法判断该属性值是否包含筛选条件中的值,如果包含则返回 'true',否则返回 'false'。
原文地址: https://www.cveoy.top/t/topic/nHCH 著作权归作者所有。请勿转载和采集!