Задать вопрос
@OrdeO
just......newbie

Как объеденить 2 хеша в один в массиве?

Есть массив с 2 хешами, такого вида
arr = [{:name => "Tom", :surname => "Johns", :age => "100"}, {:name => "Jack", :surname => "Hill", :age => "20"} ]

Нужно из него получить такой
arr = [{:name => "Tom", :surname => "Johns", :age => "100", :name => "Jack", :surname => "Hill", :age => "20"} ]

или, что еще лучше, просто хеш
arr = {:name => "Tom", :surname => "Johns", :age => "100", :name => "Jack", :surname => "Hill", :age => "20"}

Как это можно проще всего сделать?
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@GeneAYak
никак, нельзя в хеше иметь два одинаковых ключа
Ответ написан
Комментировать
oh_shi
@oh_shi
Никак, не может быть в хеше двух и более одинаковых ключей.
Ответ написан
Комментировать
Такой Hash получить не получится.
Попробуйте выполнить строчку, которую вы хотите получить:

> arr = {:name => "Tom", :surname => "Johns", :age => "100", :name => "Jack", :surname => "Hill", :age => "20"}
(irb):1: warning: key :name is duplicated and overwritten on line 1
(irb):1: warning: key :surname is duplicated and overwritten on line 1
(irb):1: warning: key :age is duplicated and overwritten on line 1


В данном случае будут предупреждения на каждый повторяющийся ключ.
А в результате, в Hash запишется значение только последнего ключа.

hash = {foo: 42, foo: 43} # => { foo: 42 }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы