获得平均回报NAN - JS

时间:2017-05-20 06:41:51

标签: javascript arrays

我正在编写一个名为" computeAverageOfNumbers"。

的函数

给定一组数字," computeAverageOfNumbers"返回平均值。

注意:

  • 如果给定一个空数组,则应返回0.

这是我的代码:



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;
&#13;
&#13;

正如您所看到的,当您提交空数组时,我的代码会返回NaN,但如果您放置常规数组项(如var input = [1,2,3,4,5];

如果给定一个空数组,它应返回0.

我错过了什么吗?

4 个答案:

答案 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;

请记住,理想情况下,您还需要进行某些类型检查,以确认您是否有阵列等,但上述内容应该为您提供基础知识。