Rou*_*ica 3 javascript arrays nan filter falsy
我有以下数组:
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
Run Code Online (Sandbox Code Playgroud)
我想filter()了所有的falsy值,除了为''和0。
我知道有一个有用的速记:
return values.filter(Boolean)
Run Code Online (Sandbox Code Playgroud)
但这会删除包括和在内的所有falsy值。 ''0
我尝试了以下方法:
return values.filter(value => [NaN, null, undefined, false].indexOf(value) < 0);
Run Code Online (Sandbox Code Playgroud)
它几乎是正确的......但它不会删除NaN.
const values = ['', 0, 'one', NaN, 1, 'two', 2, null, 'three', undefined, 3, false];
Run Code Online (Sandbox Code Playgroud)
有什么方法可以达到与上一个示例相同的结果,但也可以删除NaN?
尝试:
values.filter(value => value || value === '' || value === 0);
Run Code Online (Sandbox Code Playgroud)
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);Run Code Online (Sandbox Code Playgroud)