📅  最后修改于: 2023-12-03 14:53:10.070000             🧑  作者: Mango
有时我们需要从一个对象数组中筛选符合特定条件的对象,可以通过属性过滤实现。下面是几种方法:
使用for循环遍历对象数组,通过if语句判断对象的某个属性是否符合条件,将符合条件的对象添加到新数组中。示例代码如下:
const array = [
{ name: 'Tom', age: 18 },
{ name: 'John', age: 22 },
{ name: 'Jane', age: 20 },
{ name: 'Alice', age: 25 }
];
const newArray = [];
for (let i = 0; i < array.length; i++) {
if (array[i].age > 20) {
newArray.push(array[i]);
}
}
console.log(newArray); // [{ name: 'John', age: 22 }, { name: 'Alice', age: 25 }]
数组的filter
方法可以筛选符合条件的元素,返回一个新的数组。把筛选条件封装成一个函数,传入filter
方法中即可。示例代码如下:
const array = [
{ name: 'Tom', age: 18 },
{ name: 'John', age: 22 },
{ name: 'Jane', age: 20 },
{ name: 'Alice', age: 25 }
];
const newArray = array.filter((item) => item.age > 20);
console.log(newArray); // [{ name: 'John', age: 22 }, { name: 'Alice', age: 25 }]
reduce
方法可以将数组按某种规则转化成一个值,根据条件筛选则可以返回筛选后的数组或者一个布尔值。示例代码如下:
const array = [
{ name: 'Tom', age: 18 },
{ name: 'John', age: 22 },
{ name: 'Jane', age: 20 },
{ name: 'Alice', age: 25 }
];
// 返回符合条件的对象数组
const newArray = array.reduce((acc, curr) => {
if (curr.age > 20) {
acc.push(curr);
}
return acc;
}, []);
console.log(newArray); // [{ name: 'John', age: 22 }, { name: 'Alice', age: 25 }]
// 判断是否存在符合条件的对象
const hasAgeOver20 = array.reduce((acc, curr) => {
if (curr.age > 20) {
acc = true;
}
return acc;
}, false);
console.log(hasAgeOver20); // true
以上三种方法都可以实现根据属性过滤对象数组的功能,具体使用哪种方法,可以根据实际情况选择。