我有两个哈希,想要检查第一个哈希中的密钥是否存在于第二个哈希中

时间:2015-04-29 14:00:09

标签: ruby-on-rails ruby hash

hash1 = simple_hash = {"month" => "January", "number" => "1"}
hash2 = {"number" => "2"}

想要检查第二个哈希是否包含第一个哈希中的密钥。

我正在使用它,但不是一个好方法。

simple_hash.each do |k,v|
  hash2.each do |k1,v1|
    if k1==v1
      puts k1
    end
  end
end

4 个答案:

答案 0 :(得分:4)

获取所有常用密钥:

hash1.keys & hash2.keys
# => ["number"] 

Incase hash2总是只有一个键:

hash1.keys.include?(hash2.keys.first)
# => true

如果您只对以下内容感兴趣:

  

想要检查第二个哈希是否包含第一个哈希中的密钥。

(不管是什么键)。那么这应该足够了:

!(hash1.keys & hash2.keys).empty?
# => true

答案 1 :(得分:1)

您可以使用方法keysinclude

像这样

hash1 = {"month" => "January", "number" => "1"}
hash2 = {"number" => "2"}

hash1.each_key do |k|
  puts k if hash2.keys.include?(k)
end

答案 2 :(得分:1)

hash1.keys & hash2.keys
=> ["number"]

如果

hash1 = {"month" => "January"}
hash2 = {"number" => "2"}
hash1.keys & hash2.keys
=> []

答案 3 :(得分:0)

如果您正在寻找特定的钥匙,可以使用:

hash1.keys.include?("key_searched")

如果你想比较hash2中的一堆键,你可以使用:

hash2.keys.each{|k| puts k if hash1.keys.include?(k)}