使用Lodash的reduce来汇总一个集合

时间:2017-04-20 02:12:24

标签: lodash

我有一个简单的集合:

[{a: 1}, {a: 2}, {a: 3}]

如何使用Lodash的reduce来获得所有" a"属性吗

这似乎是一个简单/规范的用法,但我无法正确使用语法,并且令人惊讶地无法在Lodash's示例之外找到任何文档。

使用Lodash的文档示例,它应该是:

const total = _.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => elem.a);

然而,这会返回值" 3"而不是" 6'。

注意:我特别询问reduce的使用情况。我知道其他方法,例如question中的方法。

1 个答案:

答案 0 :(得分:3)

您忘记将sum添加到elem.a。此外,您需要初始缩减,否则sum将初始化为{ a: 1 }

_.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => sum + elem.a, 0);

您可能也想查看sumBy()。它是相同的减速器,只是更简洁:

_.sumBy([{ a: 1}, {a: 2}, {a: 3}], 'a');