Ruby on rails RubyonRails-数组哈希、分组依据和按列名求和

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”=>“

我有以下哈希数组:

[{“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”}]


谢谢。

您可以为此制定自己的方法,例如:

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"}]