2012-07-04 37 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

你能用一個快速的代碼片段詳細說明一下嗎? –