重複した要素を取り除く

広告

配列に格納されている要素の中で同じ要素を取り除く方法を確認します。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!」メソッドの場合には新しい配列を返すのではなく、対象の配列自身を重複を取り除いた配列に変更します。

サンプルプログラム

実際に試してみます。

LibraryArray13.rb

#! ruby -Ks

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

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

重複した要素を取り除く

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

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)