filter是JavaScript数组方法,返回满足条件的新数组而不修改原数组;典型用途是剔除null、undefined、空字符串、NaN等无效值,但需注意0和false等falsy值可能为有效数据,应按业务需求显式判断。

filter 是 JavaScript 数组的内置方法,用于创建一个新数组,其中只包含满足指定条件的元素。它不会修改原数组,而是返回符合条件的元素组成的新数组。剔除无效数据(如 null、undefined、空字符串、NaN、0 等)是它的典型用法。
识别并过滤常见无效值
JavaScript 中“无效数据”没有统一标准,需按业务定义。常见需剔除的值包括:null、undefined、空字符串 ''、NaN、0(有时)、false(有时)。注意:filter 默认会跳过 undefined 和 null,但不会自动过滤它们——必须显式判断。
- 直接用布尔值判断(隐式转换):适用于大多数“假值”(falsy),如
0、''、null、undefined、false、NaN - 但要小心:若需保留
0或false(比如表示有效状态),就不能用纯布尔判断,得写明确条件 - 示例:
[0, 1, '', 'hello', null, undefined, NaN].filter(Boolean)→[1, 'hello']
精准过滤:区分 null/undefined 与空字符串
有时你只想剔除 null 和 undefined,但保留 0、false 或空字符串。这时要用严格判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
arr.filter(item => item != null):排除null和undefined(推荐,简洁且安全) -
arr.filter(item => item !== undefined && item !== null):更显式,逻辑清晰 - 若还要排除空字符串:
arr.filter(item => item != null && item !== '') - 注意:
item != null等价于item !== null && item !== undefined,是 JS 常用简写
处理对象数组中的无效字段
实际开发中常遇到对象数组,需按某个属性是否有效来过滤:
立即学习“Java免费学习笔记(深入)”;
-
users.filter(user => user.name && user.name.trim()):剔除name为空或全空白的用户 -
list.filter(item => item.id && typeof item.id === 'number'):确保id存在且为数字 - 配合可选链(ES2020)更安全:
data.filter(item => item?.status === 'active')
避免陷阱:NaN 和 0 的特殊处理
NaN 无法用 === 判断,0 在布尔上下文中为 falsy,但可能是有效数据:
- 过滤
NaN:arr.filter(item => !Number.isNaN(item))或arr.filter(Number.isFinite)(同时排除Infinity) - 若要保留
0但剔除其他 falsy 值:arr.filter(item => item !== '' && item != null),再单独处理0 - 错误示范:
[0, 1, NaN].filter(x => x)→[1](0和NaN都被误删)

















