Javascript 如何在.filter()中保留空值和假值元素?

Javascript 如何在.filter()中保留空值和假值元素?,javascript,functional-programming,Javascript,Functional Programming,我试图从Javascript数组中解析所有不是数字的元素,但看看当数组包含除零以外的其他falsy元素时它会做什么: [false,null, false, true].filter((x)=>x) 返回 [true] 但我想保留那些虚假的元素。我如何做到这一点呢?那么,不要依赖错误检查,明确地测试数字 [false, null, false, true].filter(x => typeof x !== 'number') 如果要排除所有数字(不确定我是否理解正确),则可以执

我试图从Javascript数组中解析所有不是数字的元素,但看看当数组包含除零以外的其他falsy元素时它会做什么:

[false,null, false, true].filter((x)=>x)
返回

[true]

但我想保留那些虚假的元素。我如何做到这一点呢?

那么,不要依赖错误检查,明确地测试数字

[false, null, false, true].filter(x => typeof x !== 'number')

如果要排除所有数字(不确定我是否理解正确),则可以执行以下操作:


[false,null,false,true]。过滤器((x)=>!Number.isInteger(x))

问题在于JavaScript有几个值被认为是假值。通过发送identity
x=>x
所有被认为是错误的值都将被过滤掉

您需要提供一个函数/lambda,当它是一个数字时返回false,对于其他所有内容返回true。例如

[false,null,false,5,5.3,true]。过滤器(x=>typeof(x)!='number')
; ==> [假,空,假,真]

您能给出一个数字示例,以及您实际期望的结果吗?您的描述并不明显。因此,您希望删除除虚假值以外的所有非数字值,即
null
未定义的
NaN
'
false
?但仍将删除
null
true
false
。我想这个问题很奇怪。是的,我写了它,然后决定我不是100%的OP真正想要的。