2011-12-14 2 views
0

I이 해시는 다음 배열에 의해 어레이 그룹의 해시와 합 :루비 - 열 이름

[{ "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의 경우와 마찬가지로 해시 배열을 순서 번호로 그룹화하여 order 00001이 gr 인 경우 결과를 얻고 싶습니다. ouped하고 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_hashes arr, "order", "money" :

답변

3

당신이 뭔가처럼, 그것을 위해 자신의 방법을 만들 수 있습니다

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

신난다! 고맙습니다. – oprogfrogo