Hash#merge 可以接受 block of 3 arguments
比如对于数组中每个Hash对于相同的key把value相加作为新的值
可以用
也可以用map来解决
效率还没有benchmark过,不过map应该更加通用一些
比如对于数组中每个Hash对于相同的key把value相加作为新的值
v = [{ "Server" => 1, "Desktop" => 2},{"Server" => 3, "Desktop" => 4, "Mobile" => 5 }]
可以用
v.reduce do |result, hash|
hash.merge(result) do |key, old_value, new_value| old_value + new_value end
end
也可以用map来解决
v.reduce do |result, hash|
Hash[hash.map { |k,v| [k, (result[k].to_i) +v ] }]
end
效率还没有benchmark过,不过map应该更加通用一些