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

如何在JavaScript中便捷移除含数字与布尔值数组里的布尔值?

从混合布尔值与数字的数组中移除布尔值的最简方法

先说明你用filter(Number)不符合预期的原因:
filter(Number)的逻辑是把每个元素转成数字后,判断转换结果是否为真值。true转数字是1(属于真值),所以会被保留;false转数字是0(假值),所以被过滤。但这和我们“移除所有布尔类型元素”的需求不匹配——我们要的是不管布尔值是true还是false,都从数组里剔除。

你写出的这个写法:

[1, true, 2, false, 3].filter(x => typeof x === 'number')

就是最简且最准确的方案。它直接通过typeof判断元素类型是否为number,精准过滤掉所有布尔类型(以及其他非数字类型),逻辑清晰无歧义。

如果追求极致代码长度,可以去掉空格简写:

[1, true, 2, false, 3].filter(x=>typeof x==='number')

不过可读性会稍有下降,日常开发更推荐带空格的版本。

额外补充:如果你的数组里只有整数,也可以用Number.isInteger作为过滤函数:

[1, true, 2, false, 3].filter(Number.isInteger)

但这个方法只对整数有效,数组里如果有浮点数(比如2.5)会被误过滤,通用性不如typeof判断的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:04:55