如何基于相同的哈希键值合并两个哈希数组?

big*_*ato 1 ruby

所以我有两个哈希数组:

a = [{"b"=>123,"c"=>456}, {"b"=>456,"c"=>555}]
b = [{"c"=>456,"d"=>789},  {"b"=>222,"c"=>444}]
Run Code Online (Sandbox Code Playgroud)

如何将它们连接起来,条件是该键的值c是两个等价ab?意思是我希望能够与条件相结合a['c'] == b['c']

这是我想得到的结果:

final_array = [{"b"=>123,"c"=>456,"d"=>789}, {"b"=>456,"c"=>555}, {"b"=>222,"c"=>444}]
Run Code Online (Sandbox Code Playgroud)

ste*_*lag 6

a = [{"b"=>123,"c"=>456}, {"b"=>456,"c"=>555}]
b = [{"c"=>456,"d"=>789}, {"b"=>222,"c"=>444}]

p a.zip(b).map{|h1,h2| h1["c"] == h2["c"] ? h1.merge(h2) : [h1 ,h2]}.flatten
# => [{"b"=>123, "c"=>456, "d"=>789}, {"b"=>456, "c"=>555}, {"b"=>222, "c"=>444}]
Run Code Online (Sandbox Code Playgroud)