使用JavaScript Reduce添加一个属性并乘以另一个属性

时间:2018-09-12 20:56:19

标签: javascript reduce

var modifiers = [
    { plus : 2, times : 2},
    { plus : 0, times : 1.2},
    { plus : 10, times : 1},
    { plus : 1, times : 1.7},   

];

如果我想将所有优点加在一起,然后将所有时间相乘,我可以在这样的循环中完成

function calc(modifiers) {
    var plus = 0;
    var times = 1;
    for (var mod of modifiers) 
    {
        plus += mod.plus
        times *= mod.times
    }
    return plus * times
}

是否可以使用单个reduce来做相同的事情,或者我必须做2个reduce

1 个答案:

答案 0 :(得分:3)

当然,只需将对象用作累加器并返回具有两个值的摘要对象:

var modifiers = [
    { plus : 2, times : 2},
    { plus : 0, times : 1.2},
    { plus : 10, times : 1},
    { plus : 1, times : 1.7},   

];

let summary = modifiers
    .reduce((a, {plus, times}) => 
      ({plus: a.plus + plus, times: a.times * times}))
console.log(summary)