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 に答える