【发布时间】:2019-03-08 02:15:32
【问题描述】:
我无法理解以下示例中的 JS 逻辑。我创建了一个带有属性“票据”的对象“x”,它是一个数组。在同一个对象中,我添加了一个方法“tipCalc”,它为 x 创建了另外两个属性。第一个属性是数组“tips”。在“tips”中,“bills”的每个元素都乘以 0.2、0.15 或 0.1;第二个属性是数组“成本”。在“costs”中,“bills”的每个元素都被添加到“tips”的每个元素中。 然后当我将对象打印到控制台时,数组“tips”和“costs”都有元素。但是,当我尝试在函数 averageCalc 中计算数组“tips”中元素的平均值并将“x.tips”作为参数传递时,该函数返回 NaN。谁能向我解释一下,为什么应该返回平均值的函数返回 NaN 呢?提前致谢!
var x = {
bills: [124, 48, 268, 180, 42],
tipCalc: function() {
this.tips = [];
this.costs = [];
for (var i = 0; i < this.bills.length; i++) {
if (this.bills[i] < 50) {
this.tips[i] = this.bills[i] * 0.2;
} else if (this.bills[i] > 50 && this.bills[i] < 200) {
this.tips[i] = this.bills[i] * 0.15;
} else {
this.tips[i] = this.bills[i] * 0.1;
}
this.costs[i] = this.bills[i] + this.tips[i]
}
}
}
x.tipCalc();
function averageCalc(arr) {
var sum = "";
var average = "";
for (i = 0; i < arr.length; i++) {
sum = sum + arr[i];
average = sum / arr.length;
}
return average
}
var j = averageCalc(x.tips);
console.log(j);
【问题讨论】:
-
您的计算器函数正在尝试计算一个数值,但它将总和和平均值初始化为字符串值而不是 0。
标签: javascript arrays object methods