poyopoyo0のブログ

poyopoyoのブログ

Web 関連のメモ書きブログです。

【 Ruby 】 配列の中の重複要素だけを抽出するには

Rubyの配列arrayを重複要素無しの配列にするには

array.uniq

または

array.uniq!

とすればいいだけなのだけど、一方で、「配列の中の重複要素だけを抽出する」というメソッドは、どうやら存在しないみたい。

Rubyは配列同士の差を計算できるので

array - array.uniq

でいけるかもと思ったけど、これだと空集合になってしまって役に立たなかった。

サンプルコードを検索しても、イテレータを回すことで解決できないみたいなので、重複要素だけを抽出するコードを自分でも書いてみた。

array_uniq = array.uniq
duplicate_element_array = []

(array_uniq).each do |element|
  if array.grep(element).size > 1
    duplicate_element_array.push(element)
  end
end

puts duplicate_element_array

としてやると、 duplicate_element_array が重複要素だけを抽出した配列となる。

grepメソッドの使い方については qiita.com を参考にした。