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

使用Javascript Reduce添加一个属性并乘以另一个属性,javascript,reduce,Javascript,Reduce,如果我想把所有的加号相加,把所有的时间相乘,我可以这样循环 var modifiers = [ { plus : 2, times : 2}, { plus : 0, times : 1.2}, { plus : 10, times : 1}, { plus : 1, times : 1.7}, ]; 是否可以使用单个reduce执行相同的操作,或者我必须执行两个reduces当然,只需将对象用作累加器并返回一个包含两个值的摘要对象: var修饰符=[

如果我想把所有的加号相加,把所有的时间相乘,我可以这样循环

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

];

是否可以使用单个reduce执行相同的操作,或者我必须执行两个reduces

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

var修饰符=[
{plus:2,times:2},
{plus:0,times:1.2},
{plus:10,times:1},
{plus:1,times:1.7},
];
让summary=修饰符
.reduce((a,{plus,times})=>
({plus:a.plus+plus,times:a.times*times}))

console.log(summary)
当然,只需将对象用作累加器并返回一个包含两个值的summary对象:

var修饰符=[
{plus:2,times:2},
{plus:0,times:1.2},
{plus:10,times:1},
{plus:1,times:1.7},
];
让summary=修饰符
.reduce((a,{plus,times})=>
({plus:a.plus+plus,times:a.times*times}))

console.log(summary)
谢谢@NinaScholz——我没有注意到这一点。Edited.Absolously真棒,谢谢你,但我认为要让它真正像控制台一样,它应该是console.log(summary.plus*summary.times),这真的会帮助我理解reduce是如何工作的谢谢你,我会分析它的谢谢@NinaScholz——我没有注意到这一点。Edited.Absolously真棒,谢谢你,但我认为要让它真正成为顶级,它应该是console.log(summary.plus*summary.times),这将帮助我理解reduce的工作原理,谢谢你,我将对此进行分析
function calc(modifiers) {
    var plus = 0;
    var times = 1;
    for (var mod of modifiers) 
    {
        plus += mod.plus
        times *= mod.times
    }
    return plus * times
}