我是javascript的新手,我正在进行一项任务,创建一个使用数组中的数字计算平均值的函数。如果数组为[]
,则应返回null
。
到目前为止,我有以下代码,但它不断返回NaN
而不是null
,有人可以向我解释一下吗?提前谢谢。
function mean(arr) {
if (arr == []) {
return null;
} else {
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return round(sum / arr.length);
}
}
console.log(mean([6,2,3,3,110,6,1,0,5])); //returns 4
console.log(mean([])); //currently returning NaN, instead of null
答案 0 :(得分:0)
使用arr.length ===0
function mean(arr) {
if (arr.length === 0) {
return null;
} else {
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return round(sum / arr.length);
}
}
console.log(mean([]));
答案 1 :(得分:0)
你走了。只需将arr == []
更改为arr.length == 0
。
function mean(arr) {
if (arr.length == 0) {
return null;
} else {
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return Math.round(sum / arr.length);
}
}
console.log(mean([6,2,3,3,110,6,1,0,5])); //returns 4
console.log(mean([])); //currently returning NaN, instead of null
答案 2 :(得分:0)
添加了附加条件以检查变量是否不是数组以避免运行时异常。
function mean(arr) {
If (arr.constructor != Array) return null;
if (arr.length == 0) {
return null;
} else {
var sum = 0;
var average = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
return Math.round(sum / arr.length);
}
}