使用数组的 '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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录