比较散列中的值并返回匹配的键

Rub*_*012 0 ruby arrays hash key-value-observing ruby-on-rails-3

我正在尝试查看哈希并将其值与现有字符串进行比较,然后在找到匹配项时我想输出其密钥.我试图在代码块中写这个并将结果输出到控制台.

officer.name = "Dave"

@hash = { "Tom" => "97", "Dave" => "98", "John" => "99" }

@hash.each { |key, value| do
    if #{key} == officer.name
        puts "id: #{value}"
    else
        puts "no match"
    end
}
Run Code Online (Sandbox Code Playgroud)

现在我的控制台输出:

 id: 97
 no match
 id: 98
 no match
 id: 99
 no match
Run Code Online (Sandbox Code Playgroud)

我试图让它只输出#{value}的值,基于匹配的#{key},在这种情况下是Dave.所以对于上面的例子,我希望我的控制台只吐出数字98或"不匹配".

izo*_*ica 6

这是一个哈希!您可以更有效地执行您尝试的方式:

officer.name = "Dave"

@hash = { "Tom" => "97", "Dave" => "98", "John" => "99" }

unless @hash.key?(officer.name) 
  puts "no match"
else 
  puts "id: #{@hash[officer.name]}"
end
Run Code Online (Sandbox Code Playgroud)