ruby - 如何将两个嵌套数据结构合并为一个?

标签 ruby hashmap

我需要定义一个将两个嵌套数据结构合并为一个的方法。

这是第一个散列:

[
  {
     "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/

相关文章:

散列的散列的 Ruby 散列

JAVA:HashMap<String, ArrayList> - 如何关联值?

dictionary - Realm中的HashMap序列化(移动数据库)

java - 访问 HashMap 中数组列表中的值并编辑该值

ruby - 使用 Mechanize 和 Ruby 解析帧中的数据

ruby-on-rails - 如何在 Ruby Controller 中同时记录字符串和对象?

Ruby/Watir-Webdriver - 下载文件后无法访问该文件

ruby - (Ruby)为什么这行得通?

javascript - GWT HashMap.put() 没有向 HashMap 添加数据

ruby - 在字符串中的所有字符之间插入一个字符的更简洁的方法