2016-02-18 2 views
-2

У меня есть массив. Несмотря на то, что я могу получить его индекс без создания хэша, я хочу использовать содержимое массива для создания хэша, где его индекс является значением.Преобразование массива в хэш в Ruby с помощью метода to_h

array = ["Alice", "Bob", "Cliff"] 

Я хочу, чтобы мой хэш выглядеть следующим образом:

{ "Alice"=>0, "Bob"=>1, "Cliff"=>2 } 

Я ценю помощь.

+0

[Этот вопрос и его ответы] (http://stackoverflow.com/questions/14528560/convert-a-array-to-hash-where-keys-are-the-indices) может быть тем, что вы ищете – Zoran

+1

Я голосую, чтобы закрыть этот вопрос как вне pic, потому что [so] не является службой написания кода. Вы должны показать в своем вопросе сообщение [mcve], * точные * сообщения об ошибках, которые вы получаете, репрезентативные образцы ввода и желаемого вывода, а также вывод, который вы получаете вместо желаемого результата. –

+0

Метод to_h был включен в Ruby 2.1. Другой пример не упоминает об этом (возможно, потому, что он был дан ответ три года назад). – Perk8

ответ

3
array.each_with_index.to_h 
# => {"Alice"=>0, "Bob"=>1, "Cliff"=>2} 
0

Карта с индексом решения:

Hash[ arr.map.with_index { |num, idx| [num, idx] } ]

Или почтовый решение:

Hash[arr.zip(0..arr.size)]

+0

Нет 'Array # map_with_index'. – sawa

+0

Упс, 'map.with_index'. Будет редактировать мой пост, чтобы отразить изменения, спасибо @sawa –

Смежные вопросы