目次(まとめ)

◾️ 配列の中の重複な要素を削除して、それぞれの要素が配列の中に何個ずつあるのかを求める

こんにちは、みっちゃんです。

Rubyを使って配列を作ったんだけど、要素が重複しています。配列内の要素がそれぞれ何個ずつあるのか知りたいときにはどうすればいいの?

いろいろな方法がありますが、countメソッドとuniqメソッドを組み合わせる方法が簡単です。

今回の記事では、Rubyの配列に含まれる要素の中で、要素の種類と数を取得する方法を紹介します。

配列の中の重複な要素を削除して、それぞれの要素が配列の中に何個ずつあるのかを求める

ここでは、以下のようなフルーツ名が入った配列を考えます。

fruits = ["apple", "grape", "orange", "banana", "orange", "apple"]

フルーツの数は、以下のように算出できますが、6個になっています。

puts fruits.size #=> 6

配列の中には、重複する要素が含まれていますが、フルーツの種類は、以下のように算出でき、4種類になっています。

fruits_uniq = fruits.uniq #重複する要素を含む "fruits" という配列データから、重複を除いて "fruits_uniq" に保存

puts fruits_uniq.size #=> 4

フルーツ名が入った配列 "fruits" の中から重複する要素を除いた配列 "fruits_uniq" について、繰り返し文を使って、それぞれのフルーツ名を出力することができます。

fruits_uniq.each do |s| #繰り返し文
   puts s
end

# apple
# grape
# orange
# banana

さらに、それぞれのフルーツ名が、もともとの配列 "fruits" に何個ずつ含まれていたのか調べるには、countメソッドを使います。

fruits_uniq.each do |s| #繰り返し文
   puts "#{s}\t#{fruits.count(s)}"
end

# apple	2
# grape	1
# orange	2
# banana	1

このように実行することで、配列内に、それぞれの要素が何個ずつあったのか求めることができます。