将数组转换为 ruby​​ 中的嵌套哈希

Geo*_*rgi 2 ruby arrays hash

我有以下数组

['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)

如何将其转换为散列,如下所示:

{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
Run Code Online (Sandbox Code Playgroud)

最好的问候乔治。

tor*_*o2k 6

首先,您可以使用方法Array#map和创建一个如下所示的数组Enumerator#with_index

ary = ['a', 'b', 'c']
temporary = ary.map.with_index { |e, i| [e, { position: i }] }
# => [["a", {:position=>0}], ["b", {:position=>1}], ["c", {:position=>2}]]
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用Array#to_h自 Ruby 2.1 以来可用的方法将结果数组转换为哈希:

temporary.to_h
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}
Run Code Online (Sandbox Code Playgroud)

对于旧版本的 Ruby,该Hash.[]方法将执行以下操作:

Hash[temporary]
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}
Run Code Online (Sandbox Code Playgroud)