2013-02-12 1 views
1

У меня есть массив хэшейRuby: массив хэшей * с помощью клавиш дублирующих * до Hash (рекурсивное или глубоко уменьшить?)

var = 
[ 
{#<InstanceFoo>=>{Date1=>Value1}}, 
{#<InstanceBar>=>{Date2=>Value2}}, 
{#<InstanceBaz>=>{Date3=>Value3}} 
] 

Что я хотел бы свести к Hash:

{ 
#<InstanceFoo>=>{Date1=>Value1}, 
#<InstanceBar>=>{Date2=>Value2}, 
#<InstanceBaz>=>{Date3=>Value3} 
} 

я достиг этого в прошлом с:

var.reduce({}, :merge) 

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

var = 
[ 
{#<InstanceFoo>=>{Date1=>nil}}, 
{#<InstanceFoo>=>{Date2=>Value2}}, 
{#<InstanceFoo>=>{Date3=>Value3}} 
] 

reduce И результаты в следующем:

var = 
{ 
    #<InstanceFoo>=>{Date1=>nil} 
} 

Я хотел бы вернуться:

var = 
{ 
    #<InstanceFoo>=>{Date1=>nil, Date2=>Value2, Date3=>Value3} 
} 

Я полагаю, что это рекурсивная (или глубокая) сливаться? Есть идеи?

Благодаря

ответ

2

Try:

var.reduce({}, :deep_merge) 
+0

Абсолютно совершенным. благодаря – rwb

Смежные вопросы