我有一个简单的集合:
[{a: 1}, {a: 2}, {a: 3}]
如何使用 Lodash 的 reduce 来获取所有“a”属性的总和?
这似乎是一个微不足道的/规范的用法,但我无法正确使用语法,而且令人惊讶的是,除了Lodash 的示例之外,找不到任何文档。
使用 Lodash 的文档示例,它应该是:
const total = _.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => elem.a);
然而,这将返回值“3”而不是“6”。
注意:我特别询问reduce. 我知道其他方法,比如这个问题中的方法。
您忘记添加sum到elem.a. 此外,您需要初始减少,否则,sum将初始化为{ a: 1 }:
_.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => sum + elem.a, 0);
Run Code Online (Sandbox Code Playgroud)
你可能也想看看sumBy()这个。它是同一个减速器,只是更简洁:
_.sumBy([{ a: 1}, {a: 2}, {a: 3}], 'a');
Run Code Online (Sandbox Code Playgroud)