すべてのハッシュが同じ3つのキーとなし、他のキーを持っている場合は、ハッシュは、同様に他のキーを持っている可能性がある場合、あなたは次のように書くことができます単に
new_array1 & new_array2
#=> [{:index=>4, :column=>0, :ID=>"ABC"},
# {:index=>4, :column=>2, :ID=>"BCD-1547"}]
です。
new_array1 = [{:index=>4, :column=>0, :ID=>"ABC", :pet=>"cat"},
{:index=>4, :column=>1, :ID=>"XYZ", :bet=>"red"},
{:index=>4, :column=>2, :ID=>"BCD-1547", :met=>"Betty"}]
new_array2 = [{:index=>4, :column=>0, :ID=>"ABC", :tree=>"maple"},
{:index=>4, :column=>1, :ID=>"IJK", :colour=>"blue"},
{:index=>4, :column=>2, :ID=>"BCD-1547", :car=>"beemer"}]
keys = [:index,:column,:ID]
h1 = new_array1.each_with_object({}) { |g,h| h[g.select { |k,_| keys.include? k }] = g }
#=> {{:index=>4, :column=>0, :ID=>"ABC"}=>
# {:index=>4, :column=>0, :ID=>"ABC", :pet=>"cat"},
# {:index=>4, :column=>1, :ID=>"XYZ"}=>
# {:index=>4, :column=>1, :ID=>"XYZ", :bet=>"red"},
# {:index=>4, :column=>2, :ID=>"BCD-1547"}=>
# {:index=>4, :column=>2, :ID=>"BCD-1547", :met=>"Betty"}}
h2 = new_array2.each_with_object({}) { |g,h| h[g.select { |k,_| keys.include? k }] = g }
#=> {{:index=>4, :column=>0, :ID=>"ABC"}=>
# {:index=>4, :column=>0, :ID=>"ABC", :tree=>"maple"},
# {:index=>4, :column=>1, :ID=>"IJK"}=>
# {:index=>4, :column=>1, :ID=>"IJK", :colour=>"blue"},
# {:index=>4, :column=>2, :ID=>"BCD-1547"}=>
# {:index=>4, :column=>2, :ID=>"BCD-1547", :car=>"beemer"}}
(h1.keys & h2.keys).map { |k| [h1[k], h2[k]] }
#=> [[{:index=>4, :column=>0, :ID=>"ABC", :pet=>"cat"},
# {:index=>4, :column=>0, :ID=>"ABC", :tree=>"maple"}],
# [{:index=>4, :column=>2, :ID=>"BCD-1547", :met=>"Betty"},
# {:index=>4, :column=>2, :ID=>"BCD-1547", :car=>"beemer"}]]
1.「each_with_object」と2を使用することを検討してください。これがどのように「#何か」に役立つのですか? – mudasobwa
@ mudasobwa彼らは何かを行うために 'res'を繰り返すことができます、私は答えを更新します。 – Kris
これは私が探しているものです、ありがとう!! あなたは 'inject([])'と 'any?' doの説明ができます – danynl