Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Arrayクラス > uniq

instance method Array#uniq

uniq -> Array[permalink][rdoc]
uniq! -> self | nil
uniq {|item| ... } -> Array
uniq! {|item| ... } -> self | nil

uniq は配列から重複した要素を取り除いた新しい配列を返します。 uniq! は削除を破壊的に行い、削除が行われた場合は self を、 そうでなければnil を返します。

取り除かれた要素の部分は前に詰められます。 要素の重複判定は、Object#eql? により行われます。

p [1, 1, 1].uniq         # => [1]
p [1, 4, 1].uniq         # => [1, 4]
p [1, 3, 2, 2, 3].uniq   # => [1, 3, 2]

ブロックが与えられた場合、ブロックが返した値が重複した要素を取り除いた 配列を返します。

p [1, 3, 2, "2", "3"].uniq                # => [1, 3, 2, "2", "3"]
p [1, 3, 2, "2", "3"].uniq { |n| n.to_s } # => [1, 3, 2]

要素を先頭から辿っていき、最初に出現したものが残ります。