javascript - 从数组中删除虚假值

标签 javascript arrays filter boolean

所以我正在进行 FreeCodeCamp 挑战“从数组中删除所有虚假值。”

我做了一个函数,但由于某种原因它没有过滤所有的假值:

function bouncer(arr) {

function truthy(value) {
 return value !==  '' ||false || null || undefined || NaN ;
}

 var filtered = arr.filter(truthy);
 return filtered;
}

bouncer([7, "ate", "", false, 9]);

这应该返回

[7, "ate", 9], 

而是返回

[ 7, 'ate', false, 9 ]

如果我切换函数truthy的顺序,返回值就会改变。例如移动 '',

function truthy(value) {
   return value !==  '' ||false || null || undefined || NaN ;

----->

  return false || null || undefined || NaN || " ; 

假||空 ||未定义 ||南|| ”; 返回

[ 7, 'ate', '', 9 ]

知道发生了什么吗???谢谢!

最佳答案

return value !== '' ||false || null || undefined || NaN ;

这并不像你想象的那样。它实际上相当于

(((((value !== '') || false) || null) || undefined) || NaN)

value !== '' 时(在大多数情况下),此表达式为 true。您实际上需要检查

value !==  '' && value !== false && value !== null && value !== undefined && value !== NaN

但是由于这些都是假的,并且 Array.filter 只关心真实性和虚假性,因此您可以将 truthy 函数替换为

function truthy(value) {
  return value;
}

这甚至不值得分成三行:

var filtered = arr.filter(e => e);

关于javascript - 从数组中删除虚假值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47841877/

相关文章:

java - 根据 Java 中的表格分配成绩

javascript - 我怎样才能以最少的复杂性获得结果?

javascript - 如何使用带有 React Native 的 Navigator 制作静态底部栏?

ios - Swift2 的数组

arrays - 计算数组中的唯一项。 ( swift )

c - 如何在 C 中实现 IIR 滤波器?

javascript - Highcharts - Bubblechart - 在绘图的顶部和底部添加填充

javascript - 在运行时更改折线图的域

Android 在异步任务期间使用适配器集对 ListView 进行过滤和排序

opencv - 两个截然不同的图像之间的模式识别