我面对的是一个基本问题,但我无法找到更好的方法 处理它。
我有一个数组:
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
答案 0 :(得分:1)
这是一个可以帮助你的魔术链: - )
puts a.map{|b| b["crazy_hash"] rescue nil}.compact.flatten.first['why_hash_in_array']
# => true
它不受阵列重新排序的影响,并且会首先返回crazy_hash
。如果crazy_hash
不是哈希值,则会引发错误。