在散列数组中合并散列相同的键

时间:2016-01-28 07:59:12

标签: arrays ruby hash

我有一个哈希数组,其中包含每个块中的资源键,如下所示

[ 
  {
    "resources": {
       "abc": "...some data..."
     }
  },
  {
    "resources": {
       "xyz": "...some data..."
     }
  },
  #...
 ]

所以喜欢将其转换为

{
  "resources": {
    "abc": "...some data...",
    "xyz": "...some data...",
    # etc...
  }
}

我尝试了很多东西,但没有得到实际结果.. :(

2 个答案:

答案 0 :(得分:3)

array.inject{|h, _h| h.merge(_h){|_, h1, h2| h1.merge(h2)}}

答案 1 :(得分:2)

您可以使用Rails Active Support的Hash扩展进行深度合并

require "active_support/core_ext/hash"
array.reduce(&:deep_merge)
#=> {:resources=>{:abc=>"some data", :xyz=>"some data"}}

如果您不想使用active_support个宝石,可以复制deep_merge来自其active_support/core_ext/hash/deep_merge.rb

的方法。