Object.Reduce没有返回正确的值

时间:2018-05-02 16:18:05

标签: javascript

我需要在对象demonstrativoIr中对数组里面的所有valorReal值求和,有25个对象的valorReal值大约为300,返回的和值是416.不知道我在这里做错了什么

这是减少

.subscribe((data: any[]) => {
      this.movimento = data.reduce((a,b)=> ({
        ...a,
        dataMovimento: a.dataMovimento,
        valor: a.valor + b.valor,
        valorReal: a.demonstrativoIr.demonstrativo[0].valorReal + b.demonstrativoIr.demonstrativo[0].valorReal 
      }))

This is the original data result

1 个答案:

答案 0 :(得分:1)

您只需在最后一次迭代中总结最后两个元素valorRealab,之前的所有内容都将被忽略)。你可以改为在累加器中取valorReal

  this.movimento = data.reduce((acc, el) => ({
    ...acc,
    valor: acc.valor + el.valor,
    // Take the accumulated value here:
    valorReal: acc.valorReal + el.demonstrativoIr.demonstrativo[0].valorReal 
  // Ensure it is 0 and not undefined at the first iteration:
  }), {valor: 0, valorReal: 0});