检查javascript数组中的空值时的奇怪行为
我有一个带空的数字数组。我想得到非空元素计数的数目。我的代码:检查javascript数组中的空值时的奇怪行为,javascript,arrays,Javascript,Arrays,我有一个带空的数字数组。我想得到非空元素计数的数目。我的代码: 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.l
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);
var arrayWithNulls=[null,8,3,null,5,0,9];
var cleanArray=[];
对于(i=0;i
但是我得到的结果是4而不是5。我错过了什么 您得到这种行为是因为
0
是一个错误的值
如果代码仅包含数字,则可以将其更改为以下代码:
var arrayWithNulls=[null,8,3,null,5,0,9];
var cleanArray=[];
对于(i=0;i document.write(cleanArray.length)代码>仅用于计数,我建议对结果使用和数字变量,而不是数组和长度的误用
var arrayWithNulls=[null,8,3,null,5,0,9],
nullCount=arrayWithNulls.reduce(函数(r,a){
返回r++(a==null);
}, 0);
文件。写入(空计数)
如果(arrayWithNulls[i]!==null)
那么问题是0在js中都可以表示数字和false,很容易错误地检查出更多错误的值。谢谢,最好检查是否是numbernote排除对象、字符串和其他内容too@DanielA.White是的,这是OP问题中的陈述。这是一个数字数组。