Javascript 从空数组返回NULL
我目前正在学习使用JavaScript进行基本的web开发,参加一个在线课程,该课程使用机器人更正代码。我试图实现一个计算数组平均值的函数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 (
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;
}
}