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
答案 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)