我有这对数组:
[{"a"=>"1"},{"b"=>"2"},{"a"=>"3"},{"b"=>"4"},{"a"=>"5"}]
我想要一种方法将多个值共同的键合并到:
[{"a"=>["1","3","5"]},{"b"=>["2","4"]}]
解决方法
改进了Marc-Andre的建议.
array = [{"a"=>"1"},{"a"=>"5"}] array.group_by(&:keys).map{|k,v| {k.first => v.flat_map(&:values)}}
要么
array.group_by{|h| h.keys.first}.each_value{|a| a.map!{|h| h.values.first}}