2012-07-04 36 views
0

我期待下面的数据结构合并哈希并加入值作为数组

series = [{:name => "foo", :data => [12, 23]}, 
      {:name => "bar", :data => [14, 22]}, 
      {:name => "foo", :data => [15, 26]}] 

转换为

series = [{:name => "foo", :data => [[12, 23],[15,26]]}, 
{:name => "bar", :data => [14, 22]}] 

应该是什么在红宝石1.8来解决它的最好方法?

回答

3
series.group_by { |h| h[:name] }.map do |name, hs_for_name| 
    {:name => name, :data => hs_for_name.map { |h| h[:data] }} 
end 
#=> [{:name=>"foo", :data=>[[12, 23], [15, 26]]}, 
# {:name=>"bar", :data=>[[14, 22]]}] 
0

使用Enumerable#inject方法来映射所有项目,并根据您的需要减少结果。

+0

你能用一个快速的代码片段详细说明一下吗? –