##開発環境
ruby 2.5.5
(2.6.0でも動作確認取れました)
結論
array.rb
array = [9, 1, 2, 3, 1, 4, 3, 2, 4, 9]
array.group_by(&:itself)
=> {9=>[9, 9], 1=>[1, 1], 2=>[2, 2], 3=>[3, 3], 4=>[4, 4]}
これだけです!
まとめると、配列に入っている順番で値が同じ要素をグループ化して表示してくれます。
補足
この状態だとデータが扱いにくいので「to_aメソッド」を使用していい感じにします。
(to_aが分からない場合はググってみてください! 今回は説明省きます)
array.rb
clean_array = (array.group_by(&:itself)).to_a
=> [[9, [9, 9]], [1, [1, 1]], [2, [2, 2]], [3, [3, 3]], [4, [4, 4]]]
clean_array[0]
=> [9, [9, 9]]
clean_array[0][1]
=> [9, 9]
clean_array[0][1].count
=> 2
to_aでくくってあげると配列形式になり、扱いやすくなります。
例えば、0番目の配列に入っている数をカウントしたり、なんてこともできます。
便利なのでぜひ使ってみてください〜