簡體   English   中英

為什么我的 JavaScript 平均 function 返回 NaN?

[英]Why is my JavaScript averaging function returning NaN?

我正在嘗試創建一個 JavaScript (純) function 來平均一組數字。 沒有返回錯誤,但它總是返回 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);

有人對我的代碼有任何有效的代碼片段或改進嗎?

您需要將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

在您的示例中,您沒有使用 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);

您必須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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM