Eliminar elementos duplicados de la matriz en Ruby

Resuelto Mithun Sasidharan asked hace 13 años • 8 respuestas

Tengo una matriz Ruby que contiene elementos duplicados.

array = [1,2,2,1,4,4,5,6,7,8,5,6]

¿Cómo puedo eliminar todos los elementos duplicados de esta matriz y al mismo tiempo conservar todos los elementos únicos sin utilizar bucles for e iteraciones?

Mithun Sasidharan avatar Dec 03 '11 12:12 Mithun Sasidharan
Aceptado
array = array.uniq

uniqelimina todos los elementos duplicados y conserva todos los elementos únicos en la matriz.

Esta es una de las muchas bellezas del lenguaje Ruby.

Mithun Sasidharan avatar Dec 03 '2011 05:12 Mithun Sasidharan

Puedes devolver la intersección.

a = [1,1,2,3]
a & a

Esto también eliminará los duplicados.

jaredsmith avatar Apr 19 '2013 22:04 jaredsmith

Puedes eliminar los elementos duplicados con el método uniq:

array.uniq  # => [1, 2, 4, 5, 6, 7, 8]

Lo que también podría ser útil saber es que uniqrequiere un bloque, por lo que si tiene una serie de claves:

["bucket1:file1", "bucket2:file1", "bucket3:file2", "bucket4:file2"]

y quieres saber cuáles son los archivos únicos, puedes averiguarlo con:

a.uniq { |f| f[/\d+$/] }.map { |p| p.split(':').last }
Marek Příhoda avatar Dec 03 '2011 08:12 Marek Příhoda