js实现过滤
使用 Array.prototype.filter() 进行过滤
filter() 是 JavaScript 数组方法,用于创建一个新数组,包含通过回调函数测试的所有元素。
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // 输出 [2, 4]
自定义过滤函数
如果需要更复杂的逻辑,可以手动遍历数组并筛选符合条件的元素。
function customFilter(array, condition) {
const result = [];
for (const item of array) {
if (condition(item)) {
result.push(item);
}
}
return result;
}
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 }
];
const adults = customFilter(users, user => user.age >= 25);
console.log(adults); // 输出 [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }]
使用 Array.prototype.reduce() 过滤
reduce() 也可以实现过滤功能,通过累积符合条件的元素。
const numbers = [10, 20, 30, 40];
const filteredNumbers = numbers.reduce((acc, num) => {
if (num > 25) acc.push(num);
return acc;
}, []);
console.log(filteredNumbers); // 输出 [30, 40]
过滤对象属性
如果需要从对象中过滤特定属性,可以使用 Object.keys() 结合 filter()。
const person = { name: 'John', age: 30, city: 'New York' };
const filteredKeys = Object.keys(person).filter(key => key !== 'age');
const filteredPerson = {};
filteredKeys.forEach(key => {
filteredPerson[key] = person[key];
});
console.log(filteredPerson); // 输出 { name: 'John', city: 'New York' }
使用 Lodash 库过滤
Lodash 提供了 _.filter() 方法,适用于更复杂的数据结构。
const _ = require('lodash');
const users = [
{ name: 'Alice', active: true },
{ name: 'Bob', active: false },
{ name: 'Charlie', active: true }
];
const activeUsers = _.filter(users, { active: true });
console.log(activeUsers); // 输出 [{ name: 'Alice', active: true }, { name: 'Charlie', active: true }]
过滤嵌套数组
如果数据是嵌套结构,可以使用递归或 flatMap() 结合 filter()。

const nestedArray = [[1, 2], [3, 4, 5], [6]];
const flattenedAndFiltered = nestedArray.flatMap(arr => arr.filter(num => num % 2 === 0));
console.log(flattenedAndFiltered); // 输出 [2, 4, 6]






