我的哈希看起来类似于:
hash = {key1: true, key2: false, key3: false, key4: true}
我希望遍历哈希并打印每个具有true
值的密钥。结果应如下所示:
key1
key4
我该怎么做?我试过了:
hash.each do |k,v|
puts k if true
end
答案 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)
您可以使用map
和compact
方法:
hash.map { |k, v| k if v }.compact
答案 3 :(得分:0)
这很简单:
hash.each do |k,v|
puts k if v
end