【发布时间】:2020-06-13 13:35:24
【问题描述】:
var john = {
name: 'John Smith',
bills: [124,48,268,180,42],
tips : [],
final: [],
calcTips: function(){
for(i = 0; i < this.bills.length;i++){
if(this.bills[i] < 50){
this.tips[i] = this.bills[i] * 0.2;
this.final[i] = this.bills[i] + this.tips[i];
} else if(this.bills[i] >= 50 && this.bills[i] <= 200){
this.tips[i] = this.bills[i] * 0.15;
this.final[i] = this.bills[i] + this.tips[i];
} else{
this.tips[i] = this.bills[i] * 0.1;
this.final[i] = this.bills[i] + this.tips[i];
}
}
}
};
var mark = {
name: 'Mark Smith',
bills: [77,375,110,45],
tips : [],
final: [],
calcTips: function(){
for(i = 0; i < this.bills.length;i++){
if(this.bills[i] < 100){
this.tips[i] = this.bills[i] * 0.2;
this.final[i] = this.bills[i] + this.tips[i];
} else if(this.bills[i] >= 100 && this.bills[i] <= 300){
this.tips[i] = this.bills[i] * 0.1;
this.final[i] = this.bills[i] + this.tips[i];
} else{
this.tips[i] = this.bills[i] * 0.25;
this.final[i] = this.bills[i] + this.tips[i];
}
}
}
};
function calcAverage(tips){
var sum = 0;
for(i = 0; i < tips.length ; i++){
sum = tips[i] + sum;
}
return sum / tips.length;
}
mark.Average = calcAverage(mark.tips);
john.Average = calcAverage(john.tips);
mark.calcTips();
john.calcTips();
console.log(john);
console.log(mark);
函数 calcAverage 在平均值之外返回 NaN。 我对其进行了编码,因此它将循环提示数组并将提示加上总和添加到 sum 变量中。 有人能解释一下这个问题吗?
【问题讨论】:
-
当
tips.length == 0,你会得到0 / 0,这确实是NaN。
标签: javascript arrays function object nan