我有以下数组:
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
我要filter()
出所有falsy
值 除了 为 ''
和 0
.我知道有一个有用的速记:
return values.filter(Boolean)
但这会删除所有 falsy
值包括 ''
和 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
?
最佳答案
NaN
不等于自身(即 NaN === NaN
评估为假),因此将其与 indexOf
一起使用失败。另一种可以更好地传达您的目标(“filter() 过滤掉除 '' 和 0”之外的所有虚假值)的方法如下:
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
const filteredValues = values.filter(value => value || value === '' || value === 0);
console.log(filteredValues);
关于javascript - 从 javascript 数组中删除所有虚假值,包括 NaN 但不包括 0 和空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64138612/