我正在制作费用跟踪程序的基本代码(没有ui,只有初始脚本),但是在尝试console.log时出现问题,用户记录了总花费,我的代码仅使每笔购买的花费翻了一番项目,所以我决定在这里寻求帮助。
编码:
//initial code
const account = {
name: 'user',
expenses: [],
addExpense: function(description, amount) {
account.expenses.push({
description: description,
amount: amount
});
},
getAccountSummary: function() {
let expenses = account.expenses;
for (let i = 0; i < expenses.length; i++ ) {
let value = expenses[i].amount + expenses[i].amount;
console.log(value);
}
}
}
//output calls
account.addExpense('Milk', 8);
account.addExpense('Netflix', 30);
account.addExpense('Steam summer sale', 26);
account.addExpense('Coffee', 4);
console.log(account.getAccountSummary());
代码始终在以下记录此值:
16
60
52
8
实际上是输入值(8、30、26、4)的两倍。
我正在寻找的输出是所有这些值的总和,在这种情况下:
68
希望我的问题清楚。
最佳答案
在expenses[i].amount
上添加了let value = expenses[i].amount + expenses[i].amount;
2次,这就是为什么要加倍的原因。
如果要在getAccountSummary
中打印总和,可以执行以下操作:
getAccountSummary: function() {
const expenses = account.expenses;
let value = 0
for (let i = 0; i < expenses.length; i++ ) {
value += expenses[i].amount;
}
console.log(value);
}
但是,如果您想返回
getAccountSummary
上的总和以便可以打印它(这似乎更合理),则可以这样做: getAccountSummary: function() {
const expenses = account.expenses;
let value = 0
for (let i = 0; i < expenses.length; i++ ) {
value += expenses[i].amount;
}
return value;
}
而且您应该可以调用
console.log(account.getAccountSummary());
您也可以使用forEach()迭代费用。