Ruby: merge nested hash

前端 未结 9 1913
渐次进展
渐次进展 2020-11-30 06:25

I would like to merge a nested hash.

a = {:book=>
    [{:title=>\"Hamlet\",
      :author=>\"William Shakespeare\"
      }]}

b = {:book=>
    [{         


        
9条回答
  •  日久生厌
    2020-11-30 07:05

    I found a more generic deep-merge algorithm here, and used it like so:

    class ::Hash
        def deep_merge(second)
            merger = proc { |key, v1, v2| Hash === v1 && Hash === v2 ? v1.merge(v2, &merger) : v2 }
            self.merge(second, &merger)
        end
    end
    
    a.deep_merge(b)
    

提交回复
热议问题