如何轻松访问嵌入在数组中的哈希值?

时间:2012-01-09 04:32:18

标签: ruby arrays hash

我面对的是一个基本问题,但我无法找到更好的方法 处理它。

我有一个数组:

a = [ { "address_number" => 123, 
        "suite"=> 342, 
        "crazy_hash" => true, 
        "crazy_hash" => [{"why_hash_in_array" => true}] 
      }, 
      "I'm a string", 
      123, 
      { "empty" => ""} 
    ] 

我想使用键" why_hash_in_array"来访问哈希,并且是 这样做:

b = a.first["crazy_hash"].first["why_hash_in_array"] 

我知道这不是访问数据的好方法,因为如果 数组更改顺序,该键的检索将不起作用 了。

是否有一种来自Ruby或Rails的方法可以"神奇地"取回 那对钥匙?类似的东西:

a.magic_hash_wand["why_hash_in_array"] 
=> true 

1 个答案:

答案 0 :(得分:1)

这是一个可以帮助你的魔术链: - )

puts a.map{|b| b["crazy_hash"] rescue nil}.compact.flatten.first['why_hash_in_array']
# => true

它不受阵列重新排序的影响,并且会首先返回crazy_hash。如果crazy_hash不是哈希值,则会引发错误。