javascript过滤数组空值需区分场景:仅过滤null/undefined用item != null;还需排除空字符串则加item !== '';过滤所有假值用boolean(),但会误删0/false等有效数据。

JavaScript 中过滤数组中的空值和假值(falsy values),关键在于区分“只过滤 null/undefined” 和 “过滤所有假值(如 0、''、false 等)”。实际开发中,多数场景需要的是安全地移除 null、undefined、空字符串,但保留 0 和 false——因为它们可能是有效业务数据。下面分情况说明。
过滤 null 和 undefined(推荐用于大多数业务场景)
使用 Array.prototype.filter() 配合严格非空判断,避免误删 0 或 false:
-
arr.filter(item => item != null):简洁可靠,等价于item !== null && item !== undefined -
arr.filter(Boolean)❌ 不推荐——会同时过滤0、false、''、NaN
示例:
const data = [1, '', 0, null, 'hello', undefined, false]; data.filter(item => item != null); // [1, '', 0, 'hello', false]
过滤空字符串、null、undefined(但保留 0 和 false)
如果还需排除空字符串 '',可组合判断:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
arr.filter(item => item != null && item !== '')- 更清晰写法:
arr.filter(item => item === 0 || item === false || Boolean(item))(显式保留 0/false)
示例:
const data = [1, '', 0, null, 'hi', undefined, false]; data.filter(item => item != null && item !== ''); // [1, 0, 'hi', false]
明确过滤所有假值(包括 0、false、'' 等)
仅在语义上确实需要“真值”时使用,比如清理用户输入的非空内容:
-
arr.filter(Boolean)最简写法,本质是把每个元素转为布尔值再筛选 - 等价写法:
arr.filter(item => !!item)或arr.filter(item => item)
注意:Boolean(NaN) 也是 false,所以 NaN 也会被过滤。
处理嵌套或复杂结构(如对象数组)
若数组元素是对象,需按字段判断是否为空:
- 过滤掉
name为空(null/undefined/'')的对象:arr.filter(obj => obj?.name != null && obj.name !== '') - 用可选链(
?.)防报错,再结合非空判断更健壮
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










