如何使用其中一个预定义名称查找哈希键?

时间:2012-11-21 22:07:26

标签: ruby

我有一个任意键的哈希:

{'GET': [1,2,3]}

{'POST': ['my data 0', 'my data 1']}

哈希是从JSON生成的,它在请求体中发送。只有一个键,或者更确切地说,我忽略了任何一个键。

我想找到它是哪个键,这是我写的代码:

items = data['GET'] || data['get'] || data['POST'] || data['post']

这看起来并不整洁。如果我想要处理的键的数量增加,则表达式将很长。我希望它简短。我是Ruby的新手,有更好的方法吗?

3 个答案:

答案 0 :(得分:1)

你可以得到第一个值(假设只有一个),如下所示:

item = data.values.first

答案 1 :(得分:1)

您可以使用Hash#values_at方法。

http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-values_at

data.values_at('GET','get', 'POST','post').first

答案 2 :(得分:1)

如果您认为它可能会增长,您可能希望将HTTP方法与数据中该方法的发现分开:

methods = [:get, :post]

def find_method(data)
  keys = methods.map{|m| [m.to_s.upcase, m.to_s]}.flatten
  data.values_at(keys).first
end