如何从值数组中搜索Ruby哈希,然后根据结果返回哈希值?

mas*_*llz 1 ruby arrays hash ruby-on-rails

这是一个示例哈希和一个在哈希中搜索的示例数组:

nicknames = { "Black Mamba" => "Kobe Bryant",
              "Half Man Half Amazing" => "Vince Carter",
              "The Big Fundamental" => "Tim Duncan",
              "Big Ticket" => "Kevin Garnett",
              "Obi-Wan Ginobili" => "Manu Ginobili",
              "The Answer" => "Allen Iverson" }

names = [ "Vince Carter", "Manu Ginobili", "Allen Iverson" ]
Run Code Online (Sandbox Code Playgroud)

我想回来:

selected = { "Half Man Half Amazing" => "Vince Carter", "Obi-Wan Ginobili" => "Manu Ginobili", "The Answer" = "Allen Iverson" }
Run Code Online (Sandbox Code Playgroud)

这样做的好方法是什么?谢谢!

MrY*_*iji 7

您可以简单地执行以下操作:

nicknames.select { |key, value| names.include?(value) }
Run Code Online (Sandbox Code Playgroud)

(将您提供的代码复制粘贴到我的IRB控制台中,您将看到它正常工作).

  • 如果所有NBA球员都被列入"昵称",或许:"要求'设置'; snames = names.to_set; nicknames.select {| key,value | snames.include?(value)}`. (2认同)