在哈希中查找数组中的键值

Mar*_*ert 4 ruby hash

我有一个哈希类别如下:

categories = {"horeca" => ["bar", "waiter", "kitchen"], 
              "retail" => ["eerste", "tweede"]}
Run Code Online (Sandbox Code Playgroud)

如果值包含在值数组中,我想找到它们的键.

跟随之类的事情

categories.key("bar")
Run Code Online (Sandbox Code Playgroud)

这将返回"horeca"

截至目前,如果我这样做,我只能得到"horeca"

categories.key(["bar", "waiter", "kitchen"])
Run Code Online (Sandbox Code Playgroud)

Mát*_*osi 5

试试Enumberable#find:

categories.find { |key, values|
  values.include?("bar")
}.first
Run Code Online (Sandbox Code Playgroud)


tpe*_*pei 5

正如Máté所提到的,find如果你想找到第一个匹配的元素,你可以使用它.select如果您想要所有匹配元素,请使用.要获得你要做的钥匙:

categories.select { |key, values| values.include?("bar") }.map(&:first)
Run Code Online (Sandbox Code Playgroud)

请参阅https://ruby-doc.org/core-2.2.3/Enumerable.html#method-i-select