在哈希单行中加入公共密钥

Ben*_*zco 7 ruby arrays hash merge join

我有这对数组:

[{"a"=>"1"}, {"b"=>"2"}, {"a"=>"3"}, {"b"=>"4"}, {"a"=>"5"}]
Run Code Online (Sandbox Code Playgroud)

我想要一种方法将多个值共同的键合并到:

[{"a"=>["1","3","5"]}, {"b"=>["2","4"]}]
Run Code Online (Sandbox Code Playgroud)

saw*_*awa 4

根据马克-安德烈的建议进行了改进。

array = [{"a"=>"1"}, {"b"=>"2"}, {"a"=>"3"}, {"b"=>"4"}, {"a"=>"5"}]
array.group_by(&:keys).map{|k, v| {k.first => v.flat_map(&:values)}}
Run Code Online (Sandbox Code Playgroud)

或者

array.group_by{|h| h.keys.first}.each_value{|a| a.map!{|h| h.values.first}}
Run Code Online (Sandbox Code Playgroud)