1

だから私はハッシュの2つの配列を持っています:

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

キーの値が と の両方でc同等であるという条件で、それらをどのように連結しますか? の条件と連結できるようにしたいという意味aba['c'] == b['c']

これは私が得たい結果です:

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

3 に答える 3

0

Enumerable#flat_mapHash#updateは、この目的に最適な方法です:

a = [{"b"=>123,"c"=>456}, {"b"=>456,"c"=>555}]    
b = [{"c"=>456,"d"=>789}, {"b"=>222,"c"=>444}]
p a.zip(b).flat_map{|k,v| next k.update(v) if k["c"] == v["c"];[k,v]}
# >> [{"b"=>123, "c"=>456, "d"=>789}, {"b"=>456, "c"=>555}, {"b"=>222, "c"=>444}]
于 2013-07-01T17:02:51.267 に答える