Tuttavia, a differenza di altre strutture di dati che non supportano valori duplicati, gli array possono contenere più di un valore dello stesso tipo e valore. Questo può essere un problema, soprattutto quando si memorizza valori unici.
Questo tutorial ci insegna come rimuovere gli elementi duplicati da un array usando vari metodi.
Utilizzando il metodo Uniq in Ruby
In Ruby, possiamo usare il metodo uniq per rimuovere gli elementi duplicati da un array di input. Possiamo chiamare questo metodo su un determinato array. Il metodo restituisce quindi un nuovo array con gli elementi duplicati rimossi.
Il metodo rimuove gli elementi duplicati dall'array nell'ordine di aspetto.
Questo metodo non modifica l'array originale. Invece, crea un nuovo array con elementi unici, che possiamo assegnare a una nuova variabile o utilizzato per aggiornare una variabile esistente.
Prendi l'array di esempio che viene mostrato nel seguente:
ARR = [1,2,3,1,3,3,1,2,3]Se chiamiamo il metodo uniq, dovrebbe restituire l'array precedente con gli elementi duplicati spogliati.
IRB (main): 013: 0> arr.UniqNon importa quanti valori duplicati siano presenti nell'array, il metodo restituisce solo un singolo valore di tipo.
Come accennato, il metodo UNIQ non modifica l'array originale. Quindi, possiamo archiviare il valore risultante in una nuova variabile come mostrato nella seguente:
IRB (main): 014: 0> new_arr = arr.UniqPer modificare l'array originale, possiamo usare l'UNIQ! metodo. Questo metodo rimuove i valori duplicati dall'array originale e lo modifica per riflettere il nuovo array.
IRB (main): 015: 0> arr.Uniq!Come puoi vedere, il valore della variabile ARR viene permanentemente modificato.
Recuperare oggetti unici per classe
Il metodo uniq funziona creando un hash dagli elementi nell'array. Quindi, poiché le chiavi hash sono uniche, possiamo ottenere l'elenco delle chiavi e usarle per creare un nuovo array.
Tuttavia, possiamo passare un blocco al metodo per filtrare gli elementi per classe. Un esempio è dimostrato di seguito:
IRB (main): 017: 0> art = [1, '1', 2, '2', 3, '3']Per risolvere i valori duplicati per classe, eseguire quanto segue:
[cc lang = "text" width = "100%" height = "100%" sfuggito = "vero" tema = "blackboard" nowRap = "0"][/cc]
Chiamiamo il metodo uniq su ARR con l'argomento di: classe. Questo è noto come conversione "simbolo al proc". Converte il simbolo: classe in un proc | obj | obj.classe .
Chiamare il metodo unico con il Proc come argomento restituisce un nuovo array che contiene solo gli elementi unici basati sulla classe di ciascun elemento.
In questo caso, il metodo conserva solo uno 1, uno "1" e così via. Ma mantiene la prima occorrenza del numero e la prima occorrenza della stringa.
Questo perché utilizza il metodo di classe dell'elemento. La classe degli interi e le corde sono diverse.
Conclusione
Abbiamo discusso sull'uso dei metodi UNIQ per rimuovere i valori duplicati da un array di input. Abbiamo anche imparato a operare sul posto, consentendo di sostituire l'array originale e risolvere i valori duplicati in base alla classe genitore.