我有以下哈希。使用ruby,我想获得"运行"的价值。我无法弄清楚如何去做。如果我my_hash['entries']
,我可以挖掘那么远。如果我采用该值并向下挖掘,我会收到此错误:
no implicit conversion of String into Integer:
{"id"=>2582, "entries"=>[{"id"=>"7", "runs"=>[{"id"=>2588, ...
答案 0 :(得分:3)
假设您希望按id
查找值,Array#detect
可以解决问题:
h = {"id"=>2582, "entries"=>[{"id"=>"7", "runs"=>[{"id"=>2588}]}]}
# ⇓⇓⇓⇓⇓⇓⇓ lookup element with id = 7
h['entries'].detect { |e| e['id'] == 7 }['runs']
.detect { |e| e['id'] == 2588 }
#⇒ { "id" => 2588 }
答案 1 :(得分:2)
因为entries
中有一个数组,所以你可以使用这样的索引访问它:
my_hash["entries"][0]["runs"]
您需要按照相同的方式访问runs
内的值,因为它也是一个数组。
希望这有帮助。
答案 2 :(得分:2)
我不确定你的哈希,因为它不完整。所以,猜测你有多个运行值,如:
hash = {"id"=>2582, "entries"=>[{"id"=>"7", "runs"=>[{"id"=>2588}]},
{"id"=>"8", "runs"=>[{"id"=>2589}]},
{"id"=>"9", "runs"=>[{"id"=>2590}]}]}
然后,你可以做
hash["entries"].map{|entry| entry["runs"]}
<强>输出强>
[[{"id"=>2588}], [{"id"=>2589}], [{"id"=>2590}]]