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

т.е. объединить массивы с одинаковым ключом.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 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]}}}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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