如何过滤JS数组中的null、undefined、空字符串等但保留0?
JavaScript数组过滤:保留0,移除指定无效值
直接可用的解决方案
要实现保留0,同时移除undefined、null、空字符串''以及数组连续逗号产生的空元素,直接用filter结合严格判断即可:
const originalArr = [0, undefined, null, '', , 3, 'test', false]; const filteredArr = originalArr.filter(el => { return el !== undefined && el !== null && el !== ''; }); // 结果:[0, 3, 'test', false]
为什么之前的方法不生效?
- 仅过滤
null:只会移除null,undefined、空字符串这类无效值会被保留。 - 使用
return el != null:这个判断能排除null和undefined,但空字符串''与null松散不等,会被留下;同时多数Lint规则(如eqeqeq)禁止使用松散相等/不等运算符(==/!=),因此触发报错。
关于数组空元素的说明
数组中连续逗号产生的空元素(比如[1,,2]里的空位),filter方法会自动跳过这些空位,不会将其纳入过滤结果,无需额外处理。
处理Lint报错的注意事项
如果Lint规则要求必须使用严格相等运算符,直接用el !== null && el !== undefined替代el != null,再加上对空字符串的判断,既符合规则又能满足需求。
内容的提问来源于stack exchange,提问作者3gwebtrain
相关产品推荐
相关产品推荐

