2017-08-31 14 views
-6

uniqの順番私は、ユーザー名と価格を持っているハッシュの配列を持っていると私は、ハッシュの配列を持っている

[{"user"=>"a1", "drink"=>"d1", "price"=>"60"}, 
{"user"=>"a2", "drink"=>"d2", "price"=>"30"}, 
{"user"=>"a3", "drink"=>"d3", "price"=>"30"}, 
{"user"=>"a2", "drink"=>"d4", "price"=>"40"}] 

は、私は、ユーザーが独自の結果をしたいと価格とそれを組み合わせるに検索したい

[{"user"=>"a1", "drink"=>"d1", "price"=>"60"}, 
{"user"=>"a2", "drink"=>"d2", "price"=>"70"}, 
{"user"=>"a3", "drink"=>"d3", "price"=>"30"} 
] 
+3

「結果が欲しい」-developersコードは結果が必要なときに表示されます。 – mudasobwa

+0

@Ilyaルビーで新しいbcoz mをもっと詳しく教えてください –

+0

docsを読もうとしましたか? – Ilya

答えて

0
a = [{"user"=>"a1", "drink"=>"d1", "price"=>"60"}, 
{"user"=>"a2", "drink"=>"d2", "price"=>"30"}, 
{"user"=>"a3", "drink"=>"d3", "price"=>"30"}, 
{"user"=>"a2", "drink"=>"d4", "price"=>"40"}] 

b = [] 

a.each_with_object({}) do |x| 
    count = b.find {|y| y["user"] == x["user"] } 
    if count.nil? 
     b << x 
    else 
     count["price"] = count["price"].to_i + x["price"].to_i 
     count["price"] = count["price"].to_s 
    end 
end 

puts b 
+0

あなたは 'each'を酷使しています。それは 'b = a.each_with_object([]){...}'でなければなりません。 – mudasobwa

関連する問題