我有以下数组
['a', 'b', 'c']
如何将其转换为哈希,如下所示:
{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
祝你好运 的Georgi。
答案 0 :(得分:4)
首先,您可以使用方法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}]]
然后,您可以使用自Ruby 2.1以来可用的Array#to_h
方法将结果数组转换为哈希:
temporary.to_h
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}
对于旧版本的Ruby,Hash.[]
方法将执行:
Hash[temporary]
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}
答案 1 :(得分:1)
['a', 'b', 'c'].each_with_index.reduce({}) do |s, (e, i)|
s[e] = { position: i }
s
end