如何迭代数组中的对象并在不迭代的情况下求和属性?

时间:2017-07-29 08:02:32

标签: javascript

是否可以在不进行迭代的情况下将对象数组的所有duration值相加?

const data = [
  {
    duration: 10
    any: 'other fields'
  },
  {
    duration: 20
    any: 'other fields'
  }
]

结果应为'30'。

let result = 0
data.forEach(d => {
  result = result + d.duration
})
console.log(result)

2 个答案:

答案 0 :(得分:2)

如果没有迭代,你无法做到这一点。 您可以使用array#reduce,它使用迭代。

const data = [
  {
    duration: 10,
    any: 'other fields'
  },
  {
    duration: 20,
    any: 'other fields'
  }
];

var result = data.reduce(
  (sum, obj) => sum + obj['duration'] 
  ,0
);

console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:0)

如果没有一些迭代,我就无法获得指定属性的总和。

您可以将Array#reduce与回调和起始值零使用。



const data = [{ duration: 10, any: 'other fields' }, { duration: 20, any: 'other fields' }];
let result = data.reduce((r, d) => r + d.duration, 0);

console.log(result);