javascript - 如何在 JavaScript 中对两个数组数据求和

标签 javascript

如何将第一个数组的数据与其中数组的数据相加?

one

代码

这是我当前的代码,仅适用于第一个数组

calculateTotal: function(){
  var sum=0;
  for(var i=0;i<this.accounts.length;i++){
     sum += this.accounts[i].balance;
  }
  return sum;
},

我应该对此代码进行哪些更改才能获得我想要的结果?

最佳答案

您不仅需要 balance 属性,还需要在 payments 数组中添加每个 balance 属性。您可以使用 reduce 非常简洁地完成此操作,传入外部 balance 作为累加器的初始值:

const obj = {
  accounts: [{
    balance: 150000,
    payments: [{
        balance: 100000,
      },
      {
        balance: -200000,
      }
    ]
  }]
};
const total = obj.accounts.reduce((a, { balance, payments }) => (
  a + payments.reduce((accum, { balance }) => accum + balance, balance)
), 0);
console.log(total);

或者,以对象方法的形式:

const obj = {
  calculateTotal() {
    return obj.accounts.reduce((a, { balance, payments }) => (
      a + payments.reduce((accum, { balance }) => accum + balance, balance)
    ), 0)
  },
  accounts: [{
    balance: 150000,
    payments: [{
        balance: 100000,
      },
      {
        balance: -200000,
      }
    ]
  }]
};
console.log(obj.calculateTotal());

关于javascript - 如何在 JavaScript 中对两个数组数据求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52215207/

相关文章:

javascript - 有什么计算web KSLOC的好工具?

javascript - 如何在页面底部显示弹出模式?

Javascript onclick 对象相关方法

javascript - Bootstrap/Css 垂直导航栏应显示子菜单 onclick 而不是悬停

javascript - toBeCloseTo 等效于 Jest 中的递归相等性测试

javascript - FabricJS:延迟重复动画

javascript - Ajax调用总是失败

javascript - 如何避免javascript中的异步?

javascript - 尝试将数据从js发送到spring boot Controller

javascript - 如何在开始播放视频时向videojs添加事件监听器?