我有一个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 :(得分:2)
使用密钥访问哈希值。
arr.map { |h| h["d"] } #=> ["high", "low", "moderate", "high"]
答案 1 :(得分:0)
无需使用as_json
或each_with_index
方法。仅使用map就足够了。请参阅this回答,它解释了map
的工作原理。
object.map { |element| element["d"] }
您也可以使用[]或fetch,而不是使用哈希的dig运算符。 dig
可从ruby 2.3获得。
所以可以使用fetch
这样做:
object.map { |element| element.fetch("d") }
如果缺少键"d"
,您可以传递额外的参数来获取。
object.map { |element| element.fetch("d", "") }
如果某些元素中缺少键"d"
,则会改为使用字符串""
。
使用dig
object.map { |element| element.dig("d") }