在Ruby数组中合并和求和散列 [英] Merge and sum hashes inside a Ruby array

查看:112
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆