Skip to content
instance method

Array#uniq

() -> ::Array[Elem]
() { (Elem item) -> untyped } -> ::Array[Elem]
uniq → new_array
uniq {|element| ... } → new_array

Returns a new array containing those elements from self that are not duplicates, the first occurrence always being retained.

With no block given, identifies and omits duplicate elements using method eql? to compare elements:

Example
a = [0, 0, 1, 1, 2, 2]
a.uniq # => [0, 1, 2]

With a block given, calls the block for each element; identifies and omits “duplicate” elements using method eql? to compare block return values; that is, an element is a duplicate if its block return value is the same as that of a previous element:

Example
a = ['a', 'aa', 'aaa', 'b', 'bb', 'bbb']
a.uniq {|element| element.size } # => ["a", "aa", "aaa"]

Related: Methods for Fetching.

Ruby version changes

  1. 3.0
See also #uniq! #union #transpose #unshift also in 4.1 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0