Eliminar elementos duplicados de la matriz en Ruby
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?
Aceptado
array = array.uniq
uniq
elimina todos los elementos duplicados y conserva todos los elementos únicos en la matriz.
Esta es una de las muchas bellezas del lenguaje Ruby.
Puedes devolver la intersección.
a = [1,1,2,3]
a & a
Esto también eliminará los duplicados.
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 uniq
requiere 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 }