Ruby:哈希的数组*有重复键*到哈希(递归或深度减少?)

时间:2013-02-12 12:36:18

标签: ruby arrays ruby-on-rails-3 hash

我有一系列哈希

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

我想减少哈希:

{
#<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}
}

我想这是一个递归(或深度)合并?有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

尝试:

var.reduce({}, :deep_merge)