我有一个带有空值的数字数组。我想得到非空元素数的数量。我的代码:
var arrayWithNulls = [null, 8, 3, null, 5, 0, 9];
var cleanArray = [];
for(i = 0; i < arrayWithNulls.length; i++){
if(arrayWithNulls[i])
cleanArray.push(arrayWithNulls[i]);
}
console.log(cleanArray.length);
但是我得到4而不是5。我错过了什么?
答案 0 :(得分:3)
您收到此行为是因为0
是一个假值。
如果代码仅包含数字,则可以将代码更改为以下代码:
var arrayWithNulls = [null, 8, 3, null, 5, 0, 9];
var cleanArray = [];
for(i = 0; i < arrayWithNulls.length; i++){
if(typeof arrayWithNulls[i] === 'number')
cleanArray.push(arrayWithNulls[i]);
}
document.write(cleanArray.length);
这些是JS中的虚假值供您参考:
false, null, undefined, '', 0, NaN
答案 1 :(得分:2)
为了计算,我建议使用Array#reduce()
和数字变量代替数组而不是长度。
var arrayWithNulls = [null, 8, 3, null, 5, 0, 9],
nullCount = arrayWithNulls.reduce(function (r, a) {
return r + +(a === null);
}, 0);
document.write(nullCount);
&#13;