【问题标题】:return an array of keys from hash when values match pattern当值匹配模式时,从哈希返回一个键数组
【发布时间】:2015-05-20 11:08:09
【问题描述】:

我正在尝试遍历以下哈希

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

并返回一个键的数组,其值与年龄的指定整数匹配。因此,例如,如果我想查找所有 3 岁的宠物,它将返回一个仅包含它们名称的数组。

["Hoobie", "Ditto"]

我有以下方法,但我似乎无法获得仅返回键数组的方法,但我一直只在这样的数组中获取键 => 值:

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

这是我目前的方法

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

有什么建议吗?我被困在如何只归还钥匙

【问题讨论】:

    标签: ruby arrays hash return key


    【解决方案1】:

    只需使用#select,然后使用#keys 即可获得匹配键的数组:

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

    请参阅Hash#keys 了解更多信息。

    【讨论】:

    • 请添加对此的解释。 OP 显然对 ruby​​ 来说是新的,因此解释将使您的答案对他们以及其他有相同问题的用户更有用。
    • 非常感谢!我不知道你可以在整个块上调用 keys 方法。很有帮助!
    • 这个块只返回一个Hash,所以你可以调用任何你想要的Hash实例方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多