为什么我的 JavaScript 平均函数返回 NaN?
Why is my JavaScript averaging function returning NaN?
我正在尝试创建一个 JavaScript(纯)函数来计算一组数字的平均值。没有返回错误,但它总是 returns 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
如果你不初始化它,你就是在尝试给undefined加一个数
例如 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
您必须先将 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);
在您的示例中,您没有将 totalSum 变量初始化为 0。
你也可以用这种方式。
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);
我正在尝试创建一个 JavaScript(纯)函数来计算一组数字的平均值。没有返回错误,但它总是 returns 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
如果你不初始化它,你就是在尝试给undefined加一个数
例如 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
您必须先将 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);
在您的示例中,您没有将 totalSum 变量初始化为 0。
你也可以用这种方式。
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);