我希望转换以下数据结构
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]}]
在ruby 1.8中解决这个问题的最佳方法是什么?
答案 0 :(得分: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]]}]
答案 1 :(得分:0)
使用Enumerable#inject
方法映射所有项目并根据需要减少结果。