如何从值为数组的哈希值中获取值?

时间:2012-05-24 21:47:14

标签: ruby arrays hash

我有一个哈希:

a = {
  "person" => [
    {
      "age"     => ["0"],
      "details" => [
        {
          "hobby"    => ["6"],
          "interest" => ["programming"]
        }
      ]
    }
  ]
}

我想获得“细节”的价值。简单的方法是

a["person"].first["details"].first 

但是,它太长了,看起来并不好看。还有其他办法吗?

2 个答案:

答案 0 :(得分:3)

从哈希获取值的原始代码对我来说没问题。如果你想做更好的事情,那只能修改哈希:

a = {"person"=>{"age"=>["0"], "details"=>{"hobby"=>["6"], "interest"=>["programming"]}}}

然后您可以更好地获取访问权限:

a['person']['details'] #=> {"hobby"=>["6"], "interest"=>["programming"]}

答案 1 :(得分:3)

如果您的搜索条件基于哈希结构,最简单的方法就是在访问命令中表示您所做的事情。

如果你想减少几个字符,这里是:

a["person"][0]["details"][0]

如果您的搜索条件基于键名,您可以在Hash类中创建自己的函数来搜索嵌套的哈希值,并执行以下操作:

a.search(:details).first

如果您不喜欢方括号,请使用https://github.com/intridea/hashie并通过属性访问哈希数据:

a.person.first.details.first

无论如何,你什么也做不了,因为你的代码对任何rubyist都很常见。