通过键获取ruby哈希值

ija*_*ani 3 ruby arrays hash key

我有这样的哈希,代表一个数据树

hash = {
    'key1' => {
         'sub1' => 1,
         'sub2' => 2
    },
    'key2' => 3
}
Run Code Online (Sandbox Code Playgroud)

我想用一组表示路径的键来探索树.一些例子:

用一个简单的路径:

keys = ['key2']
Run Code Online (Sandbox Code Playgroud)

我想得到 3

用这条路径:

keys = ['key1', 'sub1']
Run Code Online (Sandbox Code Playgroud)

我想得到 1

与荣耀路径:

keys = ['key1', 'sub1', 'blabla']
keys = ['key1', 'blabla']
Run Code Online (Sandbox Code Playgroud)

得到 nil

等...等等......你明白了

Dom*_*nef 7

keys.inject(hash) {|acc, value| acc[value]}
Run Code Online (Sandbox Code Playgroud)

  • 或者:`keys.inject(hash,&:[])`基本相同. (4认同)