2つのハッシュがあるとします
hash1 = {1=>"a" , 2=>"b" ,3=>"c" , 4=>"d"}
hash2 = {2=>"whats" ,4 =>"up" ,5=> "dude"}
そして、キーが一致する場合、結果のハッシュにキー(最初のハッシュの値)と値(一致したキーに対応する値)が含まれるように、結果のハッシュを作成する必要があります
hash3 ={b=>"whats" ,d=>"up"}
2つのハッシュがあるとします
hash1 = {1=>"a" , 2=>"b" ,3=>"c" , 4=>"d"}
hash2 = {2=>"whats" ,4 =>"up" ,5=> "dude"}
そして、キーが一致する場合、結果のハッシュにキー(最初のハッシュの値)と値(一致したキーに対応する値)が含まれるように、結果のハッシュを作成する必要があります
hash3 ={b=>"whats" ,d=>"up"}
この構造は少しわかりにくいかもしれませんが、機能も果たします。
hash1 = {1=>"a" , 2=>"b" ,3=>"c" , 4=>"d"}
hash2 = {2=>"whats" ,4 =>"up" ,5=> "dude"}
hash3 = Hash[(hash1.keys & hash2.keys).map do |k|
[hash1[k], hash2[k]]
end]
hash3 # => {"b"=>"whats", "d"=>"up"}
別の方法
hash3 = hash2.each_with_object({}) do |(k, v), memo|
memo[hash1[k]] = v if hash1[k]
end
hash3 # => {"b"=>"whats", "d"=>"up"}
次のコードを試してください。
hash1 = {1=>"a" , 2=>"b" ,3=>"c" , 4=>"d"}
hash2 = {2=>"whats" ,4 =>"up" ,5=> "dude"}
hash3 = {}
hash2.each_entry { |key, value| hash3[hash1[key]] = value if hash1.include? key }