2017-08-25 43 views
-2

我有一個object變量具有以下值來訪問數組的元素:如何使用指數

[ 
{"a"=>nil, "b"=>79, "c"=>"mg/dL", "d"=>"high", "e"=>false}, 
{"a"=>80, "b"=>139, "c"=>"mg/dL", "d"=>"low", "e"=>true}, 
{"a"=>140, "b"=>199, "c"=>"mg/dL", "d"=>"moderate", "e"=>false}, 
{"a"=>200, "b"=>nil, "c"=>"mg/dL", "d"=>"high", "e"=>false} 
] 

我試圖通過索引並拿到鑰匙d的價值,但該代碼崩潰

object.as_json.each_with_index.map { |range, i| range[i].d } 

我得到undefined method d以上

我怎樣才能得到的"d"值的聲明?

回答

0

使用其密鑰訪問哈希值。

arr.map { |h| h["d"] } #=> ["high", "low", "moderate", "high"] 
0

沒有必要使用的方法as_jsoneach_with_index。僅使用map就足夠了。請參閱this的答案,它解釋了map的工作原理。

object.map { |element| element["d"] }

而不是使用[]操作哈希的,你也可以使用fetchdig。 可從ruby 2.3獲得。

所以這是可以做到這樣的使用fetchobject.map { |element| element.fetch("d") }

你可以傳遞一個額外的參數來獲取,在鍵"d"丟失。

object.map { |element| element.fetch("d", "") }

如果密鑰"d"中缺少某些元素串""代替。

並使用 object.map { |element| element.dig("d") }