Method: Array#uniq

Defined in:
array.c

#uniqArray #uniq {|item| ... } ⇒ Array

Returns a new array by removing duplicate values in self.

If a block is given, it will use the return value of the block for comparison.

It compares values using their #hash and #eql? methods for efficiency.

a = [ "a", "a", "b", "b", "c" ]
a.uniq   # => ["a", "b", "c"]

b = [["student","sam"], ["student","george"], ["teacher","matz"]]
b.uniq { |s| s.first } # => [["student", "sam"], ["teacher", "matz"]]

Overloads:

  • #uniqArray

    Returns:

  • #uniq {|item| ... } ⇒ Array

    Yields:

    • (item)

    Returns:



4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
# File 'array.c', line 4199

static VALUE
rb_ary_uniq(VALUE ary)
{
    VALUE hash, uniq;

    if (RARRAY_LEN(ary) <= 1)
        return rb_ary_dup(ary);
    if (rb_block_given_p()) {
  hash = ary_make_hash_by(ary);
  uniq = rb_hash_values(hash);
    }
    else {
  hash = ary_make_hash(ary);
  uniq = rb_hash_values(hash);
    }
    RBASIC_SET_CLASS(uniq, rb_obj_class(ary));
    ary_recycle_hash(hash);

    return uniq;
}