我正在制作费用跟踪程序的基本代码(没有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()迭代费用。

10-05 20:33
查看更多