2015-03-28 2 views
0

У меня есть отсортированный массив, полный объектов, которые я хотел бы группировать по атрибуту, но только если они смежны в массиве.Ruby/Rails Группы только Смежные элементы массива

a сортировка по атрибуту start.

a = [{name: "joe", start: "9am", end: "10am"}, {name: "joe", start: "10am", end: "11am"}, {name: "harry", start: "11am", end: "12pm"}, {name: "harry", start: "12pm", end: "1pm"}, {name: "harry", start: "1pm", end: "2pm"}, {name: "joe", start: "2pm", end: "3pm"}, {name: "joe", start: "3pm", end: "4pm"}]

Я хотел бы группу смежных объектов с помощью атрибута name, так что результаты выглядит следующим образом:

a = [[{name: "joe", start: "9am", end: "10am"},{name: "joe", start: "10am", end: "11am"}], 
    [{name: "harry", start: "11am", end: "12pm"},{name: "harry", start: "12pm", end: "1pm"},{name: "harry", start: "1pm", end: "2pm"}], 
    [{name: "joe", start: "2pm", end: "3pm"},{name: "joe", start: "3pm", end: "4pm"}]] 

ответ

1

Это должно сделать:

a.chunk {|hash| hash[:name]}.map(&:last) 
Смежные вопросы