配列から重複した要素を取り除く(uniq)

Array クラスの uniq メソッドを使うと配列に格納されている要素の中から同じ要素を取り除くことができます。ここでは Ruby で配列から重複した要素を取り除く方法について解説します。

(Last modified: )

配列から重複した要素を取り除く

Array クラスで用意されている uniq メソッドを使うと配列の中から重複した要素を取り除くことができます。

Arrayオブジェクト.uniq

uniq メソッドは配列に含まれる要素の中で同じ要素があった場合に重複している要素を取り除きいた新しい配列を返します。要素が等しいかどうかは Object クラスの eql? メソッドが内部的に使われて比較されます。

具体的には次のように記述します。

ary = [1, 2, 5, 2, 3, 5]
newary = ary.uniq

この場合、配列の要素の中には「2」と「5」が重複していますので、これらを取り除いた次の新しい配列を取得します。

[1, 2, 5, 3]

また uniq メソッドには uniq! メソッドも用意されています。

Arrayオブジェクト.uniq!

uniq! メソッドの場合には新しい配列を返すのではなく、対象の配列自身を重複を取り除いた配列に変更します。

サンプルコード

実際に試してみます。

# encoding: UTF-8

ary = [1, 2, 3, 5, 2, 5]
newary = ary.uniq

p ary
p newary

ary = [1, 2, 3, [1, 3, 2], 4, 2]
newary = ary.uniq

p ary
p newary

実行結果は次のようになります。

重複した要素を取り除く

要素として配列があり、その配列の中にある要素と同じ要素があってもこちらは取り除かれません。あくまで対象の配列の一次要素が同じものが取り除かれます。

-- --

Ruby で配列から重複した要素を取り除く方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。