Ruby on rails RubyonRails-数组哈希、分组依据和按列名求和
我有以下哈希数组: [{“idx”=>“1234”,“账户”=>“abde”,“货币”=>“4.00”, “订单”=>“00001”}、{“idx”=>“1235”、“账户”=>“abde”、“货币”=>“2.00”, “订单”=>“00001”}、{“idx”=>“1235”、“账户”=>“abde”、“货币”=>“3.00”, “订单”=>“00002”}] 就像sql是这样做的,我想用散列数组按订单号对它进行分组,结果如下:订单00001被分组,它的总金额为6.00: [{“idx”=>“1234”,“账户”=>“abde”,“货币”=>“6.00”, “订单”=>“00001”}、{“idx”=>“1234”、“账户”=>“abde”、“货币”=>“3.00”, “订单”=>“00002”}]Ruby on rails RubyonRails-数组哈希、分组依据和按列名求和,ruby-on-rails,Ruby On Rails,我有以下哈希数组: [{“idx”=>“1234”,“账户”=>“abde”,“货币”=>“4.00”, “订单”=>“00001”}、{“idx”=>“1235”、“账户”=>“abde”、“货币”=>“2.00”, “订单”=>“00001”}、{“idx”=>“1235”、“账户”=>“abde”、“货币”=>“3.00”, “订单”=>“00002”}] 就像sql是这样做的,我想用散列数组按订单号对它进行分组,结果如下:订单00001被分组,它的总金额为6.00: [{“idx”=>“
谢谢。您可以为此制定自己的方法,例如:
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\u散列arr,“order”,“money”
对您的散列数组示例返回:
[{"idx"=>"1234", "account"=>"abde", "money"=>"6.0", "order"=>"00001"}, {"idx"=>"1235", "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\u散列arr,“order”,“money”
对您的散列数组示例返回:
[{"idx"=>"1234", "account"=>"abde", "money"=>"6.0", "order"=>"00001"}, {"idx"=>"1235", "account"=>"abde", "money"=>"3.00", "order"=>"00002"}]