我试图将两个哈希组合在一起,并且无法找出最佳方法。我觉得必须有一个简单的方法来使用枚举...
我想转此:
[{ id: 5, count: 10 }, { id: 6, count: -3 }, { id: 5, count: -2 }, { id: 3, count: 4}]
进入这个:
[{ id: 5, count: 8 }, { id: 6, count: -3 }, { id: 3, count: 4}]
将具有相同“id”的哈希值相加在一起。任何人对如何快速做到这一点都有任何想法?
我试过Hash.merge,但是没有正常工作......
答案 0 :(得分:3)
这是一种方式:
hash = [{ id: 5, count: 10 }, { id: 6, count: -3 }, { id: 5, count: -2 }, { id: 3, count: 4}]
merged_hash = hash.group_by { |h| h[:id] }.map do |_,v|
v.reduce do |h1,h2|
h1.merge(h2) { |k,o,n| k == :count ? o + n : o }
end
end
merged_hash
# => [{:id=>5, :count=>8}, {:id=>6, :count=>-3}, {:id=>3, :count=>4}]