将空对象与 0 理解为数字

Understanding null object vs 0 as number

我在 Codewars 上试图完成一些任务并提出了一个问题

创建一个给定稀疏数组的 toDense() 函数,它 return 是相应的密集数组。我使用了如下所示的测试用例:

var sparse = [undefined, 2, null, , , 0, 6, null];
Test.assertSimilar( toDense(sparse), [2, 0, 6]);

我对代码的解决方案是:

function toDense(sparse){
  function isBoolean(value)
  { 

    if(value >= 0)
    {
      if(!(typeof(value) === 'object'))
        return value;
    }

  }
return sparse.filter(isBoolean);

}

但是我无法让数组成为[2,0,6],我得到的数组是[2,6]。我的问题是如果null是一个对象而0是一个数字为什么我没有如果条件为 0 return 值?

你的错误发生是因为你 return 0 到评估为假的过滤器函数。

var arr = [0,1,2,3];

console.log(arr.filter(function(v) { return v; }));

您的评价被错误的转化误导了。

替换

if(value >= 0)

if(value > 0 || value === 0)

这解决了你的断言。