我正在尝试使用underscore.js及其reduce方法对内部和数组中的对象值求和。但看起来我做错了什么。我的问题在哪里?
let list = [{ title: 'one', time: 75 },
{ title: 'two', time: 200 },
{ title: 'three', time: 500 }]
let sum = _.reduce(list, (f, s) => {
console.log(f.time); // this logs 75
f.time + s.time
})
console.log(sum); // Cannot read property 'time' of undefined
答案 0 :(得分:13)
使用原生reduce
,因为list
已经是一个数组。
reduce
回调应返回一些内容,并具有初始值。
试试这个:
let list = [{ title: 'one', time: 75 },
{ title: 'two', time: 200 },
{ title: 'three', time: 500 }];
let sum = list.reduce((s, f) => {
return s + f.time; // return the sum of the accumulator and the current time, as the the new accumulator
}, 0); // initial value of 0
console.log(sum);

注意:如果我们省略该块并使用箭头函数的隐式返回,那么reduce
调用可以进一步缩短:
let sum = list.reduce((s, f) => s + f.time, 0);