我有一个简单的集合:
[{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中的方法。
答案 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');