0

我有一个带有任意键的哈希:

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

或者

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

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

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

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

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

4

3 回答 3

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
于 2012-11-21T22:40:08.300 回答
1

你可以像这样得到第一个值(假设只有一个):

item = data.values.first
于 2012-11-21T22:11:40.293 回答
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
于 2012-11-21T22:47:59.890 回答