首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并具有相同键的值

合并具有相同键的值
EN

Stack Overflow用户
提问于 2012-10-11 06:31:45
回答 4查看 749关注 0票数 3

我需要一个图表的值,我想要合并所有具有相同日期的值。

这是我现在拥有的数组:

代码语言:javascript
复制
[ ['2012-10-09', 1], ['2012-10-09', 2], ['2012-10-10', 1], ['2012-10-10', 4], ['2012-10-10', 1], ['2012-10-11', 3] ]

我想要的结果是:

代码语言:javascript
复制
[ ['2012-10-09', 3], ['2012-10-10', 6], ['2012-10-11', 3] ]

有没有简单的方法可以做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-11 07:43:18

就这么简单:

代码语言:javascript
复制
a.inject({}) { |h,(date, count)| h[date] ||= 0; h[date] += count; h }.to_a
票数 4
EN

Stack Overflow用户

发布于 2012-10-11 06:45:02

使用rails的group_by,您可以这样做:

代码语言:javascript
复制
x = [ ['2012-10-09', 1], ['2012-10-09', 2], ['2012-10-10', 1], ['2012-10-10', 4], ['2012-10-10', 1], ['2012-10-11', 3] ]
x.group_by(&:first).map { |k, v| [k, v.map(&:last).inject(0,&:+)] }
票数 3
EN

Stack Overflow用户

发布于 2012-10-11 06:59:14

Mapreduce是一个非常强大的工具,但理解起来有点复杂。所以使用sum方法也是一样的:

代码语言:javascript
复制
x = [ ['2012-10-09', 1], ['2012-10-09', 2], ['2012-10-10', 1], ['2012-10-10', 4], ['2012-10-10', 1], ['2012-10-11', 3] ]
expected = [ ['2012-10-09', 3], ['2012-10-10', 6], ['2012-10-11', 3] ]

x.group_by(&:first).map { |k, v| [k, v.sum(&:last)] }.should == expected
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12829450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档