2016-06-20 4 views
4

は、私は、以下のオブジェクトの配列を持っていると言う:和独特のobject_idを持つプロパティの配列

objects = [{id: 1, installs: 21}, {id: 2, installs: 10}, {id:1, installs: 11}, {id:3, installs:5}] 

私は同じidのためのすべてのinstall値を合計します。これを行う最善の方法は何ですか?

+0

注 'object_id'のでルビー内のすべてのオブジェクトがこのメソッドを有し、オブジェクト上で定義された方法です。この名前をキーとして使用すると、混乱が生じる可能性があります。 – steenslag

+0

私はこの例のために使っていました。上記の質問を編集しました – locoboy

答えて

0
sorted = objects.group_by{|x|x[:id]} 
sorted.map{|x|x[1].inject(0){|sum, x| sum + x[:installs]}} 
4
objects = [{id: 1, installs: 21}, {id: 2, installs: 10}, {id: 1, installs: 11}, {id: 3, installs: 5}] 

sums = Hash.new(0) # sums returns 0 for an unknown key 
objects.each{|h| sums[h[:id]] += h[:installs]} 
p sums # => {1=>32, 2=>10, 3=>5} 
関連する問題