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()函数,该函数给定一个稀疏数组,它返回各自的密集数组。我使用了如下所示的测试用例:
我对代码的解决方案是:
但是我无法将数组设为[2,0,6],我得到的数组是[2,6]。我的问题是,如果null是一个对象,而0是一个数字,为什么我的if条件为0就不返回价值?
(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; }));