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]}]

在 ruby​​ 1.8 中解决这个问题的最佳方法应该是什么?

4

2 回答 2

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]]}]
于 2012-07-04T13:34:40.010 回答
0

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

于 2012-07-04T13:13:45.983 回答