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

时间:2014-02-21 14:37:46

标签: ruby arrays hash

我有以下数组

['a', 'b', 'c']

如何将其转换为哈希,如下所示:

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

祝你好运 的Georgi。

2 个答案:

答案 0 :(得分:4)

首先,您可以使用方法Array#mapEnumerator#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