LoginSignup
4
1

More than 3 years have passed since last update.

配列内の同じ値をグループ化する方法(Ruby)

Posted at

開発環境

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番目の配列に入っている数をカウントしたり、なんてこともできます。

便利なのでぜひ使ってみてください〜

4
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1