【问题标题】:Why is my JavaScript averaging function returning NaN?为什么我的 JavaScript 平均函数返回 NaN?
【发布时间】:2020-08-09 16:00:11
【问题描述】:

我正在尝试创建一个平均数字数组的 JavaScript(纯)函数。没有返回错误,但它总是返回 NaN。怎么了?这是我的代码:

var arr = [1, 2, 3, 4, 5, 6, 7, 8];

function average(datasetArr) {
  var totalSum;
  var x;
  for (x in datasetArr) {
    totalSum = datasetArr[x] + totalSum;
  }
  var average = totalSum / datasetArr.length; //keeps returning NaN
  console.log(average); //In the console: returns: "NaN"
}
average(arr);

有人对我的代码有任何工作代码 sn-ps 或改进吗?

【问题讨论】:

标签: javascript arrays dataset average


【解决方案1】:

需要将totalSum初始化为0

如果你不初始化它,你正在尝试添加一个数字到未定义

例如3 + undefined 将评估为NaN

附带说明,您可以使用Array.prototype.reduce 对数组求和

var array = [1, 2, 3, 4];
var sum = array.reduce((a, b) => a + b, 0);
console.log(sum); //10

【讨论】:

    【解决方案2】:

    在您的示例中,您没有使用 0 初始化 totalSum 变量。

    你也可以这样用。

    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
    
    function average(datasetArr) {
      var average = datasetArr.reduce((result, current) => result += current, 0) / datasetArr.length;
      console.log(average);
    }
    
    average(arr);

    【讨论】:

    • 谢谢!!!这实际上有效,我现在接受你的回答......
    【解决方案3】:

    您必须先将 totalSum 变量设置为 0。如果不设置为零,则无法在 for 循环内将datasetArr[x] 添加到totalSum

    解决方案:

    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
    function average(datasetArr) {
      let totalSum = 0;
    
      for (let x in datasetArr) {
        totalSum = datasetArr[x] + totalSum;
        console.log(totalSum)
      }
      var average = totalSum / datasetArr.length; 
      console.log(average); //In the console: returns: "NaN"
    }
    average(arr);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 2018-07-03
      • 2019-05-21
      • 2017-08-04
      • 1970-01-01
      • 2021-06-28
      • 2020-07-01
      相关资源
      最近更新 更多