Techioz Blog

ループを使用せずに配列内のカウントでグループ化する方法

概要

arr = [1,2,1,3,5,2,4]

並べ替えを使用してグループ値ごとに配列をカウントするにはどうすればよいですか?次の出力が必要です。

x[1] = 2  
x[2] = 2  
x[3] = 1  
x[4] = 1  
x[5] = 1

解決策

x = arr.inject(Hash.new(0)) { |h, e| h[e] += 1 ; h }