2011-12-14 41 views
0

我有以下散列數組:Ruby on Rails的 - 由陣列,組的哈希和總和由列名

[{ 「IDX」=> 「1234」, 「帳戶」=>「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是gr ouped並且它求和錢6.00:

[{ 「IDX」=> 「1234」, 「帳戶」=> 「ABDE」, 「貨幣」=> 「6.00」, 「命令」=> 「00001」},{ 「IDX」=> 「1234」, 「帳戶」=> 「ABDE」, 「貨幣」=> 「3.00」, 「命令」=> 「00002」}]

謝謝。

回答

3

你可以讓你自己的方法爲,是這樣的:你哈希例如數組返回

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

真棒!謝謝。 – oprogfrogo 2011-12-14 21:20:55