具有underscore.js和reduce的数组内的对象的和值

时间:2017-02-06 13:47:32

标签: javascript underscore.js

我正在尝试使用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

1 个答案:

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