Skip to content

Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →

instance method

Array#uniq

() -> ::Array[Elem]
() { (Elem element) -> ::Hash::_Key } -> ::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? and hash 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? and hash 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.0 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0