return 当值与模式匹配时来自散列的键数组

return an array of keys from hash when values match pattern

我正在尝试 运行 通过以下哈希

my_family_pets_ages = {"Evi" => 6, "Hoobie" => 3, "George" => 12, "Bogart" => 4, "Poly" => 4, "Annabelle" => 0, "Ditto" => 3}

和 return 键的数组,其值与年龄的指定整数相匹配。因此,例如,如果我想找到所有 3 岁的宠物,它会 return 一个仅包含它们名字的数组。

["Hoobie", "Ditto"]

我有以下方法,但我似乎无法获取 return 仅包含键的数组的方法,但我一直只获取数组中的键 => 值,如下所示:

["Hoobie"=>3, "Ditto"=>3]

这是我目前使用的方法

def my_hash_finding_method(source, thing_to_find)
  source.select {|name, age| name if age == thing_to_find}
end

有什么指点吗?我一直在研究如何 return 只有键

只需使用 #select, then #keys 获取匹配键的数组:

def my_hash_finding_method(source, thing_to_find)
  source.select { |name, age| age == thing_to_find }.keys
end

有关详细信息,请参阅 Hash#keys