我正在编写一个名为" computeAverageOfNumbers"。
的函数给定一组数字," computeAverageOfNumbers"返回平均值。
注意:
这是我的代码:
function computeAverageOfNumbers(nums) {
var total = 0;
for (var i = 0; i < nums.length; i++) {
total += nums[i];
}
var avg = total / nums.length;
return avg;
}
var input = [];
var output = computeAverageOfNumbers(input);
console.log(output); // --> returns NaN instead of 0
&#13;
正如您所看到的,当您提交空数组时,我的代码会返回NaN,但如果您放置常规数组项(如var input = [1,2,3,4,5];
如果给定一个空数组,它应返回0.
我错过了什么吗?
答案 0 :(得分:3)
在下面
if( nums.length == 0 ) return 0;
代码
function computeAverageOfNumbers(nums) {
if (nums.length == 0) return 0;
var total = 0;
for (var i = 0; i < nums.length; i++){
total += nums[i];
}
var avg = total / nums.length;
return avg;
}
答案 1 :(得分:1)
只需检查nums.length
function computeAverageOfNumbers(nums) {
if (nums.length === 0) {
return 0
} else {
var total = 0;
for (var i = 0; i < nums.length; i++) {
total += nums[i];
}
var avg = total / nums.length;
return avg;
}
}
var input = [];
var output = computeAverageOfNumbers(input);
console.log(output);
input = [2,5,9,13];
output = computeAverageOfNumbers(input);
console.log(output);
答案 2 :(得分:1)
当你的数组为空时,nums.length = 0和a如果你将数字除以0,它会给你NaN。 只需改变
var avg = total / nums.length;
到
var avg = (nums.length)?total/nums.length:0
解决您的麻烦
答案 3 :(得分:1)
当你传递一个空数组时,这一行:
var avg = total / nums.length;
是除零,所以avg将是NaN。我会在开始时将函数短路:
if (nums.length === 0)
return 0;
请记住,理想情况下,您还需要进行某些类型检查,以确认您是否有阵列等,但上述内容应该为您提供基础知识。