Задать вопрос
@andreychumak
junior

Как сгруппировать массив из хешей по ключу?

Есть массив, состоящий из хешей:
[
  {:car=>["BMW", "Mersedes", "Audi"]},
  {:car=>["Renault", "Ferrari", "Nissan"]},
  {:car=>["VW"]},
  {:country=>["Russia", "Japan", "USA"]},
  {:country=>["China", "Nigeria", "Egypt"]},
  {:city=>["Moscow", "Tokyo", "Amsterdam"]}
]

Нужно сгруппировать хэшы по ключу, типа:
[
  {:car=>[["BMW", "Mersedes", "Audi"], ["Renault", "Ferrari", "Nissan"], ["VW"]]},
  {:country=>[["Russia", "Japan", "USA"], ["China", "Nigeria", "Egypt"]]},
  {:city=>["Moscow", "Tokyo", "Amsterdam"]}
]

т.е. объединить массивы с одинаковым ключом.
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
  • Хороший программист
    Интенсив по Ruby on Rails
    5 месяцев
    Далее
  • Thinknetica
    Оптимизация Ruby/Rails-приложений
    9 недель
    Далее
Решения вопроса 1
0xD34F
@0xD34F
a = [
  {:car=>["BMW", "Mersedes", "Audi"]},
  {:car=>["Renault", "Ferrari", "Nissan"]},
  {:car=>["VW"]},
  {:country=>["Russia", "Japan", "USA"]},
  {:country=>["China", "Nigeria", "Egypt"]},
  {:city=>["Moscow", "Tokyo", "Amsterdam"]}
]

b = a.group_by{|n| n.keys[0]}.map{|k, n| {k => n.map{|m| m[k]}}}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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