Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ruby中将数组转换为嵌套哈希_Ruby_Arrays_Hash - Fatal编程技术网

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

在ruby中将数组转换为嵌套哈希,ruby,arrays,hash,Ruby,Arrays,Hash,我有以下数组 ['a', 'b', 'c'] 如何将其转换为如下所示的散列: {'a' => { position: index of array element a }, 'b' ...., 'c' ... } 致意 Georgi.首先,您可以使用数组#映射和枚举器#和_索引方法创建如下数组: ary = ['a', 'b', 'c'] temporary = ary.map.with_index { |e, i| [e, { position: i }] } # => [["

我有以下数组

['a', 'b', 'c']
如何将其转换为如下所示的散列:

{'a' => { position: index of array element a }, 'b' ...., 'c' ... }
致意
Georgi.

首先,您可以使用
数组#映射
枚举器#和_索引
方法创建如下数组:

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提供的方法将结果数组转换为哈希:

temporary.to_h
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}
对于较早版本的Ruby,该方法将执行以下操作:

Hash[temporary]
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}

+感谢您提到新数组#to#h,很好地摆脱了丑陋的散列[…],谢谢。很好地解释了当您要求代码时,我们希望您展示您解决问题的尝试。如果不这样做,看起来你只是在找别人帮你写。谢谢你的批评。在未来,我将添加解决问题的尝试。@Georgi-感谢您对反馈的积极响应
Hash[temporary]
# => {"a"=>{:position=>0}, "b"=>{:position=>1}, "c"=>{:position=>2}}