Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 从空数组返回NULL_Javascript_Arrays_Function - Fatal编程技术网

Javascript 从空数组返回NULL

Javascript 从空数组返回NULL,javascript,arrays,function,Javascript,Arrays,Function,我目前正在学习使用JavaScript进行基本的web开发,参加一个在线课程,该课程使用机器人更正代码。我试图实现一个计算数组平均值的函数 let numbers = [1,2,3] function average(array){ var total = 0; var count = 0; array.forEach(function(item){ total += item; count++; }) if (

我目前正在学习使用JavaScript进行基本的web开发,参加一个在线课程,该课程使用机器人更正代码。我试图实现一个计算数组平均值的函数

let numbers = [1,2,3]
function average(array){
    var total = 0;
    var count = 0;

    array.forEach(function(item){
        total += item;
        count++;
    })    

    if (numbers.length > 0){
        return total / count; 
    } else if (numbers = ([])) {
        return null 
    }

}

代码在实践中运行良好,但我得到一个返回的错误,即
1)定义了average,这样average([])返回null
,就像在发送空数组时,
average([])
应该返回
null
我不知道如何修复它……

在第二种情况下,
numbers=([])
编号
分配给
[]
(始终返回
true
)而不是进行比较。正确的方法是使用
=
,如下所示:

let number=[1,2,3]
函数平均值(数组){
var合计=0;
var计数=0;
array.forEach(函数(项){
合计+=项目;
计数++;
})    
如果(array.length>0){
返回总数/计数;
}else if(array.length==0){
返回空值
}
}
控制台日志(平均数);
数字=[];

控制台日志(平均数)
在第二种情况下,
numbers=([])
编号
分配给
[]
(总是返回
true
),而不是对其进行比较。正确的方法是使用
=
,如下所示:

let number=[1,2,3]
函数平均值(数组){
var合计=0;
var计数=0;
array.forEach(函数(项){
合计+=项目;
计数++;
})    
如果(array.length>0){
返回总数/计数;
}else if(array.length==0){
返回空值
}
}
控制台日志(平均数);
数字=[];

控制台日志(平均数)您不需要测试
[]
。如果数组的长度为零,则该数组为空:

let number=[1,2,3]
函数平均值(数组){
var合计=0;
var计数=0;
//如果数组为空,则无需对其进行迭代
如果(array.length>0){
array.forEach(函数(项){
合计+=项目;
计数++;
})
返回总数/计数;
}否则{
//如果我们到了这里,array.length==0
返回空
}
}
控制台日志(平均数);
数字=[];

控制台日志(平均数)您不需要测试
[]
。如果数组的长度为零,则该数组为空:

let number=[1,2,3]
函数平均值(数组){
var合计=0;
var计数=0;
//如果数组为空,则无需对其进行迭代
如果(array.length>0){
array.forEach(函数(项){
合计+=项目;
计数++;
})
返回总数/计数;
}否则{
//如果我们到了这里,array.length==0
返回空
}
}
控制台日志(平均数);
数字=[];

控制台日志(平均数)测试用例失败的原因是您在顶部定义了
数字,然后在函数中重用它。这样,它总是返回相同的结果。您应该在函数中使用
array

下面是一个简短的脚本版本,看看js能做些什么

函数平均值(数组){
让total=array.reduce((acc,value)=>acc+value,0);
返回array.length>0?总计/array.length:空;
}
日志(平均值([1,2,3]))

log(average([])
测试用例失败的原因是您在顶部定义了
数字,然后在函数中重用它。这样,它总是返回相同的结果。您应该在函数中使用
array

下面是一个简短的脚本版本,看看js能做些什么

函数平均值(数组){
让total=array.reduce((acc,value)=>acc+value,0);
返回array.length>0?总计/array.length:空;
}
日志(平均值([1,2,3]))

log(平均([]))
如果没有计数器,我会让它更简单。您拥有数组长度的总和

我还使用添加了一个版本

请不要在函数中使用数字变量。这在这里毫无意义。将变量传递给函数,并在函数内部使用接收到的变量,否则将导致其行为不正确。函数中的数字称为“arr”,因此始终使用arr

函数平均值(arr){
if(arr.length==0)返回null;
设total=0;
arr.forEach(功能(项目){
合计+=项目;
})
返回总长度/arr.length;
}
//使用array.reduce()在这里更有意义
函数平均值2(arr){
if(arr.length==0)返回null;
const total=arr.reduce(函数(上一个,下一个){
返回上一个+下一个;
});
返回总长度/arr.length;
}
console.log(平均值([]);
log(平均值([1,2,3]);
console.log(平均2([]);

log(平均2([1,2,3])如果没有计数器,我会让它更简单。您拥有数组长度的总和

我还使用添加了一个版本

请不要在函数中使用数字变量。这在这里毫无意义。将变量传递给函数,并在函数内部使用接收到的变量,否则将导致其行为不正确。函数中的数字称为“arr”,因此始终使用arr

函数平均值(arr){
if(arr.length==0)返回null;
设total=0;
arr.forEach(功能(项目){
合计+=项目;
})
返回总长度/arr.length;
}
//使用array.reduce()在这里更有意义
函数平均值2(arr){
if(arr.length==0)返回null;
const total=arr.reduce(函数(上一个,下一个){
返回上一个+下一个;
});
返回总长度/arr.length;
}
console.log(平均值([]);
log(平均值([1,2,3]);
console.log(平均2([]);
log(平均2([1,2,3])
  • 在average()方法中使用的是数字而不是数组
  • 您的数组可能未定义。试试美国
    function average(array) {
        if (typeof array == "object" && array.length > 0) {
            var total = 0;
            var count = 0;
            array.forEach(function(item) {
                total += item;
                count++;
            });
            return total / count;
        } else {
            return null;
        }
    }