You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中返回移除所有真值的新数组?

只保留数组中的假值(移除所有真值)

最简正确实现

JavaScript里的假值只有固定6种:false、0、""(空字符串)、null、undefined、NaN,其余全是真值。要保留假值,直接用filter方法过滤即可:

const keepFalsy = (arr) => arr.filter(item => !item);

或者更直观的写法:

function keepFalsy(arr) {
  return arr.filter(item => Boolean(item) === false);
}

测试示例:
输入:[0, false, "", null, undefined, NaN, 1, "hello", {}, [], Infinity]
输出:[0, false, "", null, undefined, NaN]


你的代码存在的问题

  1. 手动枚举真值完全不可行:真值的范围几乎是无限的(任意非空对象、非零数字、非空字符串、Infinity、[]空数组等全是真值),你不可能把所有真值都列出来,这种方式必然遗漏大量情况。
  2. 对象比较逻辑错误:arr[i] == {}永远返回false——对象是引用类型,只有两个对象指向同一内存地址时才相等,你这里是拿数组元素和新创建的空对象比较,永远不匹配,这个条件等于无效。
  3. 判断逻辑覆盖不全:你只列举了少量真值(比如5、"hello"),像1、[]、{a:1}这类真值根本没被包含在判断条件里,所以不会被移除,最终数组里还会残留这些真值,导致结果不符合预期。

内容的提问来源于stack exchange,提问作者la10nay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:02:21