我创建了一个简单的对象。我正在尝试在对象上创建一种方法,该方法可处理一个数组中的数据并将数据推入两个新数组中。由于某些原因,新数据将不会填充两个新数组。当我运行方法john.tipCalc();时没有东西被推到我的空数组。
let john = {
fullName: "John Smith",
bills: [124, 48, 268, 180, 42],
tips : [],
finalBill : [],
tipCalc: function() {
this.bills.forEach(function(bill) {
let percentage;
if (bill < 50) {
percentage = 0.2;
} else if (bill >= 50 && bill <= 200) {
percentage = 0.15;
} else {
percentage = 0.1;
}
this.tips = bill * percentage;
this.finalBill = bill + bill * percentage;
});
}
};
我希望在“ tips”数组中填充在tipCalc方法中以bill *百分比计算的tip。然后,我要在“ finalBill”数组中填充帐单总额以及按帐单+帐单*百分比计算的小费百分比。
答案 0 :(得分:4)
您需要push()
进入tips
。如果您想按如下方式使用() => {}
,还需要在forEach
中使用箭头功能this.tips
:
let john = {
fullName: "John Smith",
bills: [124, 48, 268, 180, 42],
tips : [],
finalBill : 0, // shouldn't this be a single number?
tipCalc: function() {
this.bills.forEach(bill => { // use arrow function
let percentage;
if (bill < 50) {
percentage = 0.2;
} else if (bill >= 50 && bill <= 200) {
percentage = 0.15;
} else {
percentage = 0.1;
}
this.tips.push(bill * percentage); // push()!
this.finalBill += bill * percentage; // add
});
}
};
john.tipCalc()
console.log("Tips", john.tips)
console.log("Final:", john.finalBill )
如果由于某些原因您无法使用箭头功能,则可以将this
作为最终参数传递给forEach()
答案 1 :(得分:0)
您应该使用Array.push():
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push https://www.w3schools.com/jsref/jsref_push.asp
更正:
this.tips.push(bill * percentage);
this.finalBill.push(bill + bill * percentage);
答案 2 :(得分:0)
这里:
this.tips = bill * percentage;
this.finalBill = bill + bill * percentage;
您正在使用该操作的结果覆盖数组。
您需要将其推送:
this.tips.push(bill * percentage);
this.finalBill.push(bill + bill * percentage);