在我的Ruby on Rails应用程序中,此哈希中包含嵌套数组:
COLORS = {
:red => %w(draft open deactivated),
:green => %w(sent downloaded paid activated)
}
是否可以提交诸如draft
之类的数组值以获取相应的哈希键?
lookup_hash("draft") # => :red
感谢您的帮助。
答案 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