我需要定义一个将两个嵌套数据结构合并为一个的方法。
这是第一个散列:
[
{
"blake" => {
:awesomeness => 10,
:height => "74",
:last_name => "johnson"
},
"ashley" => {
:awesomeness => 9,
:height => 60,
:last_name => "dubs"
}
}
]
这是第二个哈希:
[
{
:first_name => "blake"
},
{
:first_name => "ashley"
}
]
结果是这样的:
[
{
:first_name => "blake",
:awesomeness => 10,
:height => "74",
:last_name => "johnson"
},
{
:first_name => "ashley",
:awesomeness => 9,
:height => 60,
:last_name => "dubs"
}
]
最佳答案
请注意,您所说的散列实际上是数组,而且它们也不一致。第一个是包含单个哈希的数组,第二个是包含两个哈希的数组。
对于给定的两个数组,如果我们调用第一个 v1
和第二个 v2
,那么下面的代码应该会给出您想要的输出:
v1[0].values.map.with_index {|v, i| v2[i].merge(v)}
解释:
Hash#merge
合并两个散列,因此必须使用它来获得结果。
第一个散列将来自 v1
- 我们选择 v1
数组的第一个元素,它是一个散列,并获取它的所有 值
它们本身就是散列 - 因此,我们在 v1[0].values
中有一个散列数组。
第二个哈希数组是 v2
。
现在,我们使用 Enumerable#map
迭代第一个哈希数组并收集将其每个元素与 v2
中的相应元素合并的结果的方法。
关于ruby - 如何将两个嵌套数据结构合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37445550/