tyr*_*ter 25 ruby hash ruby-on-rails
我正在使用Rails,我有一个哈希对象.我想在哈希中搜索特定值.我不知道与该值相关的键.
如何检查散列中是否存在特定值?另外,如何找到与该特定值相关联的密钥?
rkb*_*rkb 53
散列包括Enumerable,因此您可以使用该模块上的许多方法来遍历散列.它也有这个方便的方法:
hash.has_value?(value_you_seek)
Run Code Online (Sandbox Code Playgroud)
要查找与该值关联的键:
hash.key(value_you_seek)
Run Code Online (Sandbox Code Playgroud)
Ruby(1.9.2)的这个API文档应该会有所帮助.
检查哈希中是否存在多个值的最简单方法是:
h = { a: :b, c: :d }
h.values_at(:a, :c).all? #=> true
h.values_at(:a, :x).all? #=> false
Run Code Online (Sandbox Code Playgroud)
如果您还需要使用ActiveSupport在Rails中检查空白值:
h.values_at(:a, :c).all?(&:present?)
Run Code Online (Sandbox Code Playgroud)
要么
h.values_at(:a, :c).none?(&:blank?)
Run Code Online (Sandbox Code Playgroud)
在没有ActiveSupport的Ruby中,也可以通过传递一个块来实现:
h.values_at(:a, :c).all? { |i| i && !i.empty? }
Run Code Online (Sandbox Code Playgroud)