Это предполагает, что в массиве tips
уже есть значения, равные количеству значений в массиве bills
, и обновляет соответствующее значение в tips
(неправильно, я мог бы добавить. Покрыто позже).
Однако, поскольку вы инициализировали tips
только с одним значением 0, l oop не имеет ничего для обновления после первой итерации.
Вместо этого я бы порекомендовал:
var john = {
fullName: 'john smith',
bills: [124, 48, 32, 268, 180, 42],
calcTips: function() {
/* I'm assuming you initialized these with one value of 0 because you're doing
a calculation later using these, so we'll leave them be */
this.tips = [0];
this.finalvalue = [0];
for ( var i = 0; i < this.bills.length; i+= 1 ) {
var percentage;
/* Reassigning variables requires the equals sign (=) rather than
a colon (:) */
if (this.bills[i] < 50) {
percentage = .2;
} else if (this.bills[i] >= 50 && this.bills[i] < 200 ) {
percentage = .15;
} else {
percentage = .1;
}
/* If i is 0, only update the first value of tips (using splice()), past
that, push in a new value */
if (i === 0) {
this.tips.splice(i, 1, this.bills[i] * percentage ;
} else {
this.tips.push(this.bills[i] * percentage);
}
this.finalvalue[i] = this.bills[i] + this.bills[i] * percentage;
}
}
}