filter是JavaScript数组方法,遍历原数组并返回满足条件元素的新数组,不修改原数组;回调函数需返回布尔值,常用参数为当前元素,适用于数字筛选(如n>10)和对象筛选(如u.status==='active')。
filter 是 JavaScript 数组的一个方法,它会遍历数组每一项,根据你提供的函数返回 true 或 false,只保留返回 true 的元素,生成一个**新数组**,原数组不变。
语法很简单:
const 新数组 = 原数组.filter(回调函数)
回调函数接收三个参数:当前元素、当前索引、原数组,最常用的是第一个(当前元素)。
true → 这个元素被保留在新数组里false → 这个元素被跳过例子:
const nums = [5, 12, 8, 15, 3]; const bigNums = nums.filter(n => n > 10); // 结果:[12, 15]
这里箭头函数 n => n > 10 对每个数字判断是否大于 10,只有满足条件的才进新数组。
例子:
const users = [
{ name: '张三', status: 'active' },
{ name: '李四', status: 'inactive' },
{ name: '王五', status: 'active' }
];
const activeUsers = users.filter(u => u.status === 'active');
// 结果:[{ name: '张三', ... }, { name: '王五', ... }]
注意:filter 不修改原数组,users 保持不变,activeUsers 是全新数组。

[1, , 3]),filter 仍会调用回调(但当前值是 undefined),需自行判断0、''、null 都算 false;返回对象、非零数、字符串都算 true(但不推荐依赖隐式转换)基本上就这些。filter 的核心就是“留真去假”,写清楚判断逻辑,它就帮你把符合条件的元素挑出来,干净又安全。