javascript - 从 javascript 数组中删除所有虚假值,包括 NaN 但不包括 0 和空字符串

标签 javascript arrays filter nan falsy

我有以下数组:

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/

相关文章:

javascript - 如何从 JS "in another file"访问 PHP 数组?

javascript - AngularJS 指令绑定(bind)链接 : has no access to scope variables

php - 解析我无法识别为对象、数组或 Json 的字符串

arrays - 从 postgres 数组中删除重叠条目

java - 如何将 spring 2 中的 AuthenticationProcessingFilterEntryPoint 转换为 spring 4

git - 如何设置 gitattributes 来过滤文件的一部分?

javascript - 我的bundle.js似乎没有创建

javascript - 捕获 svg 中重叠 g 元素中的指针事件

尝试使用 C++ const 静态成员初始化数组时未识别

python - 删除具有一定百分比的 0's pandas 的列和行