Ruby on Rails – Hash of Arrays,group by和sum by column name

我有以下哈希数组:

[{“idx”=>“1234”,“account”=>“abde”,“money”=>“4.00”,“order”=>“00001”},{“idx”=>“1235”,“ account“=>”abde“,”money“=>”2.00“,”order“=>”00001“},{”idx“=>”1235“,”account“=>”abde“,”money“= >“3.00”,“order”=>“00002”}]

就像sql的做法一样,我想采用哈希数组并按顺序编号对其进行分组,这样就可以得到这样的结果,其中订单00001被分组,它将钱加到6.00:

[{“idx”=>“1234”,“account”=>“abde”,“money”=>“6.00”,“order”=>“00001”},{“idx”=>“1234”,“ account“=>”abde“,”money“=>”3.00“,”order“=>”00002“}]

谢谢。

你可以为此制作自己的方法,例如:

def group_hashes arr, group_field, sum_field arr.inject({}) do |res, h| (res[h[group_field]] ||= {}).merge!(h) do |key, oldval, newval| key.eql?(sum_field) ? (oldval.to_f + newval.to_f).to_s : oldval end res end.values end 

在你的哈希数组示例中调用group_hashes arr, "order", "money"返回:

 [{"idx"=>"1234", "account"=>"abde", "money"=>"6.0", "order"=>"00001"}, {"idx"=>"1235", "account"=>"abde", "money"=>"3.00", "order"=>"00002"}]