我有两个像这样的哈希值。
a = {foo: {first: 1}, bar: {first: 2}}
b = {foo: {second: 3}, bar: {second: 4}}
我期望 a.merge b
的结果是这样的。
{foo: {first: 1, second: 3}, bar: {first: 2, second: 4}}
但是 a.merge b
返回 {:foo=>{:second=>3}, :bar=>{:second=>4}}
。
如何合并两个哈希值而不丢失值?
最佳答案
如果您的散列格式始终像您指定的那样,则以下内容可行:
a = {foo: {first: 1}, bar: {first: 2}}
b = {foo: {second: 3}, bar: {second: 4}}
a.each_with_object(b) { |(k,v),x| x[k].merge!(v) }
# => {:foo=>{:second=>3, :first=>1}, :bar=>{:second=>4, :first=>2}}
否则请使用ActiveSupport
的deep_merge!
关于ruby - 如何合并两个哈希而不丢失值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23464093/