我有一系列像这样的哈希:
[ {:foo=>2, :date=>Sat, 01 Sep 2014},
{:foo2=>2, :date=>Sat, 02 Sep 2014},
{:foo3=>3, :date=>Sat, 01 Sep 2014},
{:foo4=>4, :date=>Sat, 03 Sep 2014},
{:foo5=>5, :date=>Sat, 02 Sep 2014}]
Run Code Online (Sandbox Code Playgroud)
如果:date相同,我想合并哈希.我对上面数组的期望是:
[ {:foo=>2, :foo3=>3, :date=>Sat, 01 Sep 2014},
{:foo2=>2, :foo5=>5 :date=>Sat, 02 Sep 2014},
{:foo4=>4, :date=>Sat, 03 Sep 2014}]
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
也许我应该重新考虑数据结构本身?例如,我应该使用date值作为哈希的键吗?
这是你如何在一条线(演示)中做到这一点:
hashes.group_by{|h| h[:date] }.map{|_, hs| hs.reduce(:merge)}
Run Code Online (Sandbox Code Playgroud)
此代码执行以下操作:
:date价值划分所有哈希值:date组,获取其中的所有哈希值并将它们全部合并为一个哈希值编辑:由tokland和Cary Swoveland提出的应用修改.谢谢!