filter是JavaScript数组方法,创建新数组保留满足条件的元素而不修改原数组;回调函数返回true保留、false过滤,支持数值、对象、字符串等多类型条件筛选及空值处理。

filter 是 JavaScript 数组的内置方法,用于创建一个新数组,包含所有满足指定条件的原数组元素。它不会修改原数组,而是返回符合条件的元素组成的全新数组。
filter 的基本用法
调用方式:array.filter(callback),其中 callback 是一个函数,接收三个参数:当前元素、当前索引、原数组(后两个常省略)。只要回调函数返回 true,该元素就会被保留在新数组中。
- 回调函数必须有返回值,且应为布尔值(或可转为布尔值的值)
- 返回
true表示“留下”,false表示“过滤掉” - 原数组保持不变
根据数值条件过滤
比如筛选出大于 10 的数字:
const numbers = [5, 12, 8, 20, 3];<br>const filtered = numbers.filter(n => n > 10);<br>// 结果:[12, 20]
也可以结合其他逻辑,如偶数、范围区间等:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
-
arr.filter(x => x % 2 === 0)→ 筛选偶数 arr.filter(x => x >= 5 && x → 筛选 5 到 15 之间的数
根据对象属性过滤
处理对象数组时,常按某个属性值筛选:
const users = [<br> { name: 'Alice', age: 25 },<br> { name: 'Bob', age: 30 },<br> { name: 'Charlie', age: 22 }<br>];<br>const adults = users.filter(user => user.age >= 25);<br>// 结果:[{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }]
还可组合多个条件:
users.filter(u => u.age > 25 && u.name.startsWith('B'))-
users.filter(u => u.name.includes('a'))(忽略大小写可用toLowerCase())
处理空值与边界情况
filter 自动跳过稀疏数组中的空位,但要注意 null、undefined、0、'' 等 falsy 值是否需要保留:
- 想排除
null和undefined:用arr.filter(x => x != null) - 想排除所有 falsy 值(包括 0、false、''):直接
arr.filter(Boolean) - 想保留 0 或空字符串,只排除
null/undefined,需显式判断:arr.filter(x => x !== undefined && x !== null)

















