This question already has answers here:
Why is null in JavaScript bigger than -1, less than 1, but not equal (==) to 0? What is it exactly then?
                                
                                    (2个答案)
                                
                        
                                4年前关闭。
            
                    
我在Codewars上尝试完成一些任务,并提出了一个问题

创建一个toDense()函数,该函数给定一个稀疏数组,它返回各自的密集数组。我使用了如下所示的测试用例:

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是一个数字,为​​什么我的if条件为0就不返回价值?

最佳答案

发生错误是因为您向过滤器函数返回0,该过滤器函数将其评估为false。



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

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

09-25 18:04
查看更多