Вот объект, с которым я работаю в Ruby. Это куча событий, отсортированных по дате, но я хочу, чтобы объект был на один уровень глубже, если в объекте есть два или более одного объекта event_type.Как объединить объекты в вложенные объекты по значению в объекте?
@events = [
{ :id => 1, :event_type => "B", :created_at => "2013-09-30 14:44:24 UTC"},
{ :id => 2, :event_type => "A", :created_at => "2013-09-29 14:44:24 UTC"},
{ :id => 3, :event_type => "A", :created_at => "2013-09-28 14:44:24 UTC"},
{ :id => 4, :event_type => "C", :created_at => "2013-09-27 14:44:24 UTC"},
{ :id => 5, :event_type => "C", :created_at => "2013-09-26 14:44:24 UTC"},
{ :id => 6, :event_type => "A", :created_at => "2013-09-25 14:44:24 UTC"}
]
Я ищу, чтобы превратить его в это:
@events = [
{ :id => 1, :event_type => "B", :created_at => "2013-09-30 14:44:24 UTC"},
{ :grouped_events => [
{ :id => 2, :event_type => "A", :created_at => "2013-09-29 14:44:24 UTC"},
{ :id => 3, :event_type => "A", :created_at => "2013-09-28 14:44:24 UTC"}
]
},
{ :grouped_events => [
{ :id => 4, :event_type => "C", :created_at => "2013-09-27 14:44:24 UTC"},
{ :id => 5, :event_type => "C", :created_at => "2013-09-26 14:44:24 UTC"}
]
},
{ :id => 6, :event_type => "A", :created_at => "2013-09-25 14:44:24 UTC"}
]
мне нужен общий объект, чтобы сохранить вложенные объекты, отсортированные по дате, но если есть 2 или более событий сгруппированы вместе, я хотите, чтобы они превратились в массив, как видно из вывода выборки. Кажется, простая проблема, но я не могу понять, как это понять.
You не может иметь две клавиши с одинаковыми name (': event') – Pol0nium
Хорошая точка, исправлена. – scottdevries
@Scott, я понятия не имею, если вы считаете это предпочтительным (и вы, вероятно, подумали об этом), но вместо этого вы можете использовать @events = [[{: id => 1, .. UTC "}], [{ : id => 2, .. UTC "},: id => 3, .. UTC"}], [{: id => 4, .. UTC "}, {: id => 5, .. UTC" }], [{: id => ..UTC "}]' –