[英]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.