我有以下数组:
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
我想使用filter()
方法过滤掉所有falsy
值,除了''
和0
。
我了解这里有一个有用的简写:
return values.filter(Boolean)
但这么做会把所有“假”值都排除,包括''和0。
我尝试了以下代码:
return values.filter(value => [NaN, null, undefined, false].indexOf(value) < 0);
这几乎正确……但是它没有删除NaN
。
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
const filteredValues = values.filter(value => [NaN, null, undefined, false].indexOf(value) < 0);
console.log(filteredValues);
有没有一种方法可以实现与最后一个示例相同的结果,但也删除NaN
?
&& !isNaN(value)
? - Heretic Monkeyif ( ... )
来测试value
是否为假值,以测试""
和0
。 - Andreas