打印特定值的键

时间:2016-03-03 10:28:51

标签: ruby hash

我的哈希看起来类似于:

hash = {key1: true, key2: false, key3: false, key4: true}

我希望遍历哈希并打印每个具有true值的密钥。结果应如下所示:

key1 
key4

我该怎么做?我试过了:

hash.each do |k,v|
  puts k if true
end

4 个答案:

答案 0 :(得分:5)

虽然迭代很好,但目标可能会以更加红宝石的方式实现:

 hash.select { |_, v| v }.keys

或者,如果与true相等(与仅仅是真相相反)是重要的:

 hash.select { |_, v| v == true }.keys

要打印出结果:

 puts hash.select { |_, v| v == true }.keys

有关Hash#select如何运作的更多信息。

打印匹配为“key1和key4”的所有键:

puts hash.select { |_, v| v == true }.keys.join(' and ')

答案 1 :(得分:3)

hash.each do |k, v|
  puts k if v == true
end

答案 2 :(得分:1)

您可以使用mapcompact方法:

hash.map { |k, v| k if v }.compact

答案 3 :(得分:0)

这很简单:

hash.each do |k,v|
  puts k if v
end