在哈希数组中添加相同Key的值

Anu*_*nuj 1 ruby arrays hash hashmap

尝试添加相同键的值但迭代它.这是我的阵列

arr = [ {a: 10, b: 5, c: 2}, {a: 5, c: 3}, { b: 15, c: 4}, {a: 2}, {} ]
Run Code Online (Sandbox Code Playgroud)

想要转换它就像

{a: 17, b: 20, c: 9} 
Run Code Online (Sandbox Code Playgroud)

Wan*_*ker 6

这是通过使用Enumerable#reduce和执行此操作的一种方法Hash#merge:

arr.reduce {|acc, h| acc.merge(h) {|_,v1,v2| v1 + v2 }}
#=> {:a=>17, :b=>20, :c=>9}
Run Code Online (Sandbox Code Playgroud)

  • `(Hash.new {| h,k | 0})`可以省略,但`merge!`应该替换为`merge`(否则,`arr [0]`将被修改) (3认同)