私はjson構造を持っています:
[["item1", 1, 0], ["item1", 1, 0], ["item1", 1, 0], ["item2", 1, 0], ["item2", 1, 0],["item3", 1, 0],["item4", 1, 0],["item5", 1, 0]..]]
現在、ループを介して手動で合計して、次の結果を取得しています
[["item1", 3, 0], ["item2", 2, 0], ["item4", 1, 0], ["item5", 1, 0]]
それを行う別の方法はありますか?Rubyで配列モジュールを見ましたが、これを行う別の方法があるかどうかはわかりません...
編集:これは私がやっていたことです:ここでは、2番目の項目のみを合計しています
@object = []
@stat = Hash.new
@data.each do |d|
if @object.include?(d[0])
@stat [d[0]] += d[2]
else
@object << d[0]
@stat[ d[0] ] = d[2]
end
end
編集2:
ワンライナーソリューションの時間を計り、自分のものと比較しました
ワンライナー: 0.005 鉱山: 0.007
これは私が最後に使用したものです:
data.inject(Hash.new(0)) { |stat, item|
if item[0] =~ /[a-z][a-z][0-9][0-9][a-z]/ # extra stuff that I needed
item[0] = item[0][0..8]
stat[item[0]] += item[2]
end
stat
}
みんなありがとう、たくさんのことを学びました。