ソース(すでに適切に注文されています):
rows = [{"key"=>[2012, 10]}, {"key"=>[2012, 9]}, {"key"=>[2011, 7]}]
望ましい結果:
[[2012, [10, 9]], [2011, [7]]]
ソース(すでに適切に注文されています):
rows = [{"key"=>[2012, 10]}, {"key"=>[2012, 9]}, {"key"=>[2011, 7]}]
望ましい結果:
[[2012, [10, 9]], [2011, [7]]]
データは事前に注文されているため、chunk
代わりにgroup_by
次のものを使用できます。
rows.chunk { |h| h.values.first[0] }.map do |year, hs|
[year, hs.map { |h| h.values.first[1] }]
end
#=> [[2012, [10, 9]], [2011, [7]]]
rows.map {|row| row.values.flatten}.inject({}) {|h,r| h[r[0]].nil? ? h[r[0]] = [r[1]] : h[r[0]] << r[1];h }.to_a
# [[2012, [10, 9]], [2011, [7]]]
また
rows.map {|row| row.values.flatten}.inject({}) {|h,r| h[r[0]] ||= []; h[r[0]] << r[1];h }.to_a
# [[2012, [10, 9]], [2011, [7]]]