Как лучше всего преобразовать массив в хеш в Ruby
ПРИМЕЧАНИЕ. Краткое и эффективное решение hashmaps см. в Marc-André Lafortune's answer ниже.
Этот ответ изначально static-array предлагался как альтернатива static-array подходам с использованием jsonarray flatten, которые на момент array-of-objects написания были наиболее популярны. Я hashmap должен был пояснить, что hashmaps я не собирался представлять array этот пример как передовой string-array опыт или эффективный подход. Далее ruby следует исходный ответ.
Предупреждение! Решения, использующие character-arrays flatten, не сохраняют ключи или swift-array значения массива!
Основываясь bytearray на популярном ответе @John javascript-array Topley, давайте попробуем:
a3 = [ ['apple', 1], ['banana', 2], [['orange','seedless'], 3] ]
h3 = Hash[*a3.flatten]
Это ruby вызывает ошибку:
ArgumentError: odd number of arguments for Hash
from (irb):10:in `[]'
from (irb):10
Конструктор character-arrays ожидал массив четной длины hashmaps (например, ['k1', 'v1,' k2 bytearray ',' v2 ']). Что еще хуже, другой string-array массив, который сглаживается swift-array до одинаковой длины, просто jsonarray молча дает нам хэш с неправильными javascript-array значениями.
Если вы хотите hashmaps использовать ключи или значения bytearray массива, вы можете использовать arrays карту:
h3 = Hash[a3.map {|key, value| [key, value]}]
puts "h3: #{h3.inspect}"
Это сохраняет ключ массива:
h3: {["orange", "seedless"]=>3, "apple"=>1, "banana"=>2}
ruby
arrays
hashmap
Как лучше всего преобразовать массив в хеш в Ruby
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.