Sin embargo, a diferencia de otras estructuras de datos que no admiten valores duplicados, las matrices pueden contener más de un valor del mismo tipo y valor. Esto puede ser un problema, especialmente cuando almacena valores únicos.
Este tutorial nos enseña cómo eliminar los elementos duplicados de una matriz utilizando varios métodos.
Usando el método Uniq en Ruby
En Ruby, podemos usar el método Uniq para eliminar los elementos duplicados de una matriz de entrada. Podemos llamar a este método en una matriz determinada. El método luego devuelve una nueva matriz con los elementos duplicados que se eliminan.
El método elimina los elementos duplicados de la matriz en el orden de apariencia.
Este método no modifica la matriz original. En su lugar, crea una nueva matriz con elementos únicos, que podemos asignar a una nueva variable o utilizado para actualizar una variable existente.
Tome la matriz de ejemplo que se muestra en lo siguiente:
arr = [1,2,3,1,3,3,1,2,3]Si llamamos al método UNIQ, debería devolver la matriz anterior con los elementos duplicados despojados.
irb (principal): 013: 0> arr.uniqNo importa cuántos valores duplicados hay en la matriz, el método solo devuelve un solo valor de tipo.
Como se mencionó, el método uniq no modifica la matriz original. Por lo tanto, podemos almacenar el valor resultante en una nueva variable como se muestra en la siguiente:
irb (principal): 014: 0> new_arr = arr.uniqPara modificar la matriz original, podemos usar el uniq! método. Este método elimina los valores duplicados de la matriz original y lo modifica para reflejar la nueva matriz.
irb (principal): 015: 0> arr.uniq!Como puede ver, el valor de la variable ARR se modifica permanentemente.
Obtener artículos únicos por clase
El método uniq funciona creando un hash fuera de los elementos en la matriz. Por lo tanto, dado que las teclas hash son únicas, podemos obtener la lista de las claves y usarlas para crear una nueva matriz.
Sin embargo, podemos pasar un bloque al método para filtrar los elementos por clase. Un ejemplo se demuestra en lo siguiente:
irb (principal): 017: 0> arr = [1, '1', 2, '2', 3, '3']Para ordenar los valores duplicados por clase, ejecute lo siguiente:
[cc lang = "text" width = "100%" height = "100%" escapado = "true" thema = "Blackboard" Nowrap = "0"][/cc]
Llamamos al método UNIQ en ARR con el argumento de clase y:. Esto se conoce como conversión de "símbolo para proc". Convierte el símbolo: clase a un proc | obj | obj.clase .
Llamar al método único con el proceso como argumento devuelve una nueva matriz que contiene solo los elementos únicos basados en la clase de cada elemento.
En este caso, el método solo conserva uno 1, uno "1", y así sucesivamente. Pero mantiene la primera ocurrencia del número y la primera ocurrencia de la cuerda.
Esto se debe a que usa el método de clase del elemento. La clase de enteros y las cuerdas son diferentes.
Conclusión
Discutimos sobre el uso de los métodos UNIQ para eliminar los valores duplicados de una matriz de entrada. También aprendimos a operar en su lugar, permitiéndole reemplazar la matriz original y ordenar los valores duplicados basados en la clase principal.