Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查javascript数组中的空值时的奇怪行为_Javascript_Arrays - Fatal编程技术网

检查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;idocument.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问题中的陈述。这是一个数字数组。