@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"]}
]

т.е. объединить массивы с одинаковым ключом.
  • Вопрос задан
  • 68 просмотров
Решения вопроса 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| Hash[k, n.map{|m| m[k]}]}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Teachbase Москва
от 100 000 руб.
Wheely Москва
До 220 000 руб.
22 июля 2018, в 20:41
10000 руб./за проект
22 июля 2018, в 20:13
2000 руб./за проект