Ruby on rails 如何获取其值等于ruby中给定参数的散列的键?

Ruby on rails 如何获取其值等于ruby中给定参数的散列的键?,ruby-on-rails,ruby,class,loops,hash,Ruby On Rails,Ruby,Class,Loops,Hash,所以我试图从rubeque解决这个问题。基本上我只需要得到一个散列的键,它的值等于给定的参数。我想知道你们能否给我一些提示?为了解决这个问题,非常感谢 这就是我目前所拥有的 class Hash def keys_of(*args) key = Array.new args.each { |x| key << x} key.each { |x,y| x if y == key} end end assert_equal [:a

所以我试图从rubeque解决这个问题。基本上我只需要得到一个散列的键,它的值等于给定的参数。我想知道你们能否给我一些提示?为了解决这个问题,非常感谢

这就是我目前所拥有的

class Hash
  def keys_of(*args)
            key = Array.new
    args.each { |x| key << x} 
    key.each { |x,y| x if y == key}
  end
end



 assert_equal [:a], {a: 1, b: 2, c: 3}.keys_of(1)
   assert_equal [:a, :d], {a: 1, b: 2, c: 3, d: 1}.keys_of(1)
   assert_equal [:a, :b, :d], {a: 1, b: 2, c: 3, d: 1}.keys_of(1, 2)
类哈希
def键(共(*args)
key=Array.new
args.each{x |键使用:


使用:


h={a:1,b:2,c:3,d:1}
p h.每个带有对象([]){|(k,v),ar | ar[:a,:b,:d]
h={a:1,b:2,c:3,d:1}
p h.每个带有对象([]){|(k,v),ar | ar[:a,:b,:d]

Nice(y),我喜欢使用
args.include?(value)
进行最后一次测试pass@Satya,谢谢,我错过了。很好(y),我喜欢这个使用
args.include?(value)
进行最后一次测试pass@Satya,谢谢,我错过了。
{a: 1, b: 2, c: 3, d: 1}.select { |key, value| value == 1 }
# => {:a=>1, :d=>1}
{a: 1, b: 2, c: 3, d: 1}.select { |key, value| value == 1 }.keys
# => [:a, :d]

{a: 1, b: 2, c: 3, d: 1}.select { |key, value| [1,2].include? value }.keys
#=> [:a, :b, :d]
class Hash
  def keys_of(*args)
    select { |key, value| args.include? value }.keys
  end
end
h = {a: 1, b: 2, c: 3, d: 1}
p h.each_with_object([]){|(k,v),ar| ar<<k if [1,2].member?(v)}
# >> [:a, :b, :d]