在Ruby数组中合并和求和散列 [英] Merge and sum hashes inside a Ruby array
本文介绍了在Ruby数组中合并和求和散列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个看起来像这样的Ruby数组:
I have an Ruby array that looks like this:
[{ :date => '2018-02-01', :capacity => 5, :used_capacity => 3 },
{ :date => '2018-02-01', :capacity => 10, :used_capacity => 3 },
{ :date => '2018-02-02', :capacity => 5, :used_capacity => 3 }]
如果哈希值具有相同的日期,我需要对它们进行哈希运算,然后对容量和used_capacity字段求和.
And I need to the hashes if they have the same date and sum the capacity and used_capacity fields.
因此它需要成为:
[{ :date => '2018-02-01', :capacity => 15, :used_capacity => 6 },
{ :date => '2018-02-02', :capacity => 5, :used_capacity => 3 }]
有人能把我推向正确的方向吗?
Can anyone push me in the right direction?
Thnx!
推荐答案
input = [{ :date => '2018-02-01', :capacity => 5, :used_capacity => 3 },
{ :date => '2018-02-01', :capacity => 10, :used_capacity => 3 },
{ :date => '2018-02-02', :capacity => 5, :used_capacity => 3 }]
input.group_by { |h| h[:date] }.
values.
map do |a|
a.reduce do |acc, h|
acc.merge(h) { |k, v1, v2| k == :date ? v1 : v1 + v2 }
end
end
这篇关于在Ruby数组中合并和求和散列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文