【问题标题】:Use Lodash's reduce to sum a collection使用 Lodash 的 reduce 对集合求和
【发布时间】:2017-04-20 02:12:24
【问题描述】:

我有一个简单的收藏:

[{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 中的方法。

【问题讨论】:

  • 阅读 lodash 的例子,_.reduce([{ a: 1}, {a: 2}, {a: 3}], (sum, elem) => sum + elem.a,0) 应该可以工作
  • 这里是link to jsfiddle

标签: lodash


【解决方案1】:

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

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

您可能也想查看sumBy()。是同一个reducer,只是更简洁:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2016-12-11
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多