我有以下数组
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
如何将其转换为散列,如下所示:
{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
Run Code Online (Sandbox Code Playgroud)
最好的问候乔治。
首先,您可以使用方法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)