如何在嵌套哈希(3d 级别)上查询列是否为特定值?(在 Rails 控制台中)

Kai*_*999 1 ruby hash

hash1 = {"k1" => "v1" , "hash2" => {"k2" => "v2", "hash3" => { "k3" =>"v3"}}}
Run Code Online (Sandbox Code Playgroud)

如何在 rails 控制台中查询 v3 的值是否为特定值?

Seb*_*lma 5

Hash#dig 适用于这些情况:

{"k1" => "v1" , "hash2" => {"k2" => "v2", "hash3" => { "k3" =>"v3"}}}.dig('hash2', 'hash3', 'k3') 
# 'k3'
Run Code Online (Sandbox Code Playgroud)

它通过在每一步调用 dig 来提取由关键对象序列指定的嵌套值,如果任何中间步骤为 nil,则返回 nil。

不管是 Rails 控制台还是其他任何控制台,只要 Ruby 版本没有改变并且您使用的是完全相同的Hash#dig方法。