filter() 方法需配合正确判断条件才能精准剔除 null:用 item !== null 保留 0/""/false;item != null 同时过滤 null 和 undefined;对象数组用 user?.name !== null 安全提取;filter(Boolean) 会误删 0/false,应按需选用条件。

filter() 方法本身不会自动识别或清洗 null,但可以精准、简洁地剔除 null(以及 undefined、0、false 等假值)——关键在于写对判断条件。
只过滤 null(保留 0、false、"" 等其他值)
若数据中混有 null,但你想保留数字 0、空字符串 ""、布尔值 false 等“合法但为假”的值,必须显式比对:
- 用严格相等
!== null最安全 - 避免用
!item,它会误删0、""、false
示例:
const data = [1, null, "hello", 0, null, false, ""];const cleaned = data.filter(item => item !== null);
// → [1, "hello", 0, false, ""]
同时过滤 null 和 undefined(常见场景)
后端返回的数据常含 null 或 undefined,二者都应剔除:
- 可写成
item != null(利用抽象相等的特性,null == undefined为 true,且二者都不等于其他值) - 更清晰的写法是
item !== null && item !== undefined
示例:
const data = ["a", null, undefined, 42, null];const cleaned = data.filter(item => item != null);
// → ["a", 42]
配合对象数组,安全提取非 null 字段
处理对象数组时,常需过滤掉某个字段为 null 的整条记录:
- 先确保对象存在,再访问属性,避免报错
- 推荐写法:
item && item.field !== null或item?.field !== null(需环境支持可选链)
示例:
const users = [{ id: 1, name: "Alice" },
{ id: 2, name: null },
{ id: 3, name: "Bob" }
];
const validUsers = users.filter(user => user?.name !== null);
// → [{ id: 1, name: "Alice" }, { id: 3, name: "Bob" }]
扩展:一行过滤多种“无效值”
若业务允许将 null、undefined、空字符串统一视为空白值,可用 Boolean() 或短路逻辑:
-
filter(Boolean)是最简写法,等价于filter(x => x) - 注意:它也会去掉
0、false、NaN - 如需保留数字 0,改用
filter(x => x != null && x !== "")
示例:
const mixed = [1, "", null, "ok", 0, undefined];const truthyOnly = mixed.filter(Boolean); // → [1, "ok"]
const nonEmptyNonNil = mixed.filter(x => x != null && x !== ""); // → [1, "ok", 0]

















