我有以下阵列转换阵列嵌套散列红宝石
['a', 'b', 'c']
如何将它转换成散列这样的怒吼:
{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
问候 格奥尔基。
我有以下阵列转换阵列嵌套散列红宝石
['a', 'b', 'c']
如何将它转换成散列这样的怒吼:
{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
问候 格奥尔基。
首先,你可以创建类似下面的使用方法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}]]
然后你就可以得到的数组转换使用可用的Array#to_h
方法,因为红宝石2.1散列:
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}}
['a', 'b', 'c'].each_with_index.reduce({}) do |s, (e, i)|
s[e] = { position: i }
s
end
当您询问代码时,我们希望您展示您的尝试来解决问题。如果没有这样做,看起来你只是在为别人写信给你。 –
谢谢你的批评。将来我会加入解决问题的尝试。 – Georgi
@Georgi - 感谢您积极响应 –