如何从带有嵌套数组的哈希中获取哈希键?

时间:2018-10-20 10:15:07

标签: arrays ruby hash

在我的Ruby on Rails应用程序中,此哈希中包含嵌套数组:

COLORS = {
  :red    => %w(draft open deactivated),
  :green  => %w(sent downloaded paid activated)
}

是否可以提交诸如draft之类的数组值以获取相应的哈希键?

lookup_hash("draft") # => :red

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

另一种想法是将哈希值反转以获得更清晰的代码:

STATUS_COLORS = {
  draft: :red,
  open: :red,
  deactivated: :red,
  sent: :green,
  downloaded: :green,
  paid: :green,
  activated: :green,
}

然后,您只需执行STATUS_COLORS.fetch(status.to_sym)。它有点冗长,但是访问它的代码更具可读性。

答案 1 :(得分:2)

如果给定元素存在于多个数组中怎么办?如果那没问题

def lookup_hash(item)
  COLORS.find { |k, v| v.include?(item) }&.first
end