Retirez les doublons d'un réseau de rubis

Retirez les doublons d'un réseau de rubis
Un tableau est une structure de données incroyable qui vous permet de stocker une collection d'éléments. Chaque élément du tableau est attribué avec une valeur entière unique qui désigne sa position dans le tableau. Les tableaux sont quelques-unes des structures de données les plus populaires et les plus polyvalentes dans Ruby et d'autres langages de programmation. Vous pouvez utiliser les tableaux pour stocker tout type de données telles que des chaînes, des entiers ou même d'autres tableaux.

Cependant, contrairement à d'autres structures de données qui ne prennent pas en charge les valeurs en double, les tableaux peuvent contenir plus d'une valeur du même type et de la même valeur. Cela peut être un problème, surtout lorsque vous stockez des valeurs uniques.

Ce tutoriel nous apprend à supprimer les éléments en double d'un tableau en utilisant diverses méthodes.

Utilisation de la méthode Uniq dans Ruby

Dans Ruby, nous pouvons utiliser la méthode UNIQ pour supprimer les éléments en double d'un tableau d'entrée. Nous pouvons appeler cette méthode sur un tableau donné. La méthode renvoie ensuite un nouveau tableau avec les éléments en double étant supprimés.

La méthode supprime les éléments en double du tableau dans l'ordre de l'apparence.

Cette méthode ne modifie pas le tableau d'origine. Au lieu de cela, il crée un nouveau tableau avec des éléments uniques, que nous pouvons attribuer à une nouvelle variable ou utilisée pour mettre à jour une variable existante.

Prenez l'exemple de tableau qui est indiqué dans les éléments suivants:

arr = [1,2,3,1,3,3,1,2,3]

Si nous appelons la méthode UNIQ, elle doit renvoyer le tableau précédent avec les éléments en double dépouillés.

IRB (Main): 013: 0> Arr.uniq
=> [1, 2, 3]

Peu importe le nombre de valeurs en double dans le tableau, la méthode ne renvoie qu'une seule valeur de type.

Comme mentionné, la méthode UNIQ ne modifie pas le tableau d'origine. Par conséquent, nous pouvons stocker la valeur résultante dans une nouvelle variable comme indiqué dans les éléments suivants:

IRB (Main): 014: 0> new_arr = arrond.uniq
=> [1, 2, 3]

Pour modifier le tableau d'origine, nous pouvons utiliser l'Uniq! méthode. Cette méthode supprime les valeurs en double du tableau d'origine et la modifie pour refléter le nouveau tableau.

IRB (Main): 015: 0> Arr.uniq!
=> [1, 2, 3]
IRB (Main): 016: 0> arr
=> [1, 2, 3]

Comme vous pouvez le voir, la valeur de la variable ARR est modifiée en permanence.

Récupérer des articles uniques par classe

La méthode UNIQ fonctionne en créant un hachage hors des éléments du tableau. Par conséquent, comme les clés de hachage sont uniques, nous pouvons obtenir la liste des clés et les utiliser pour créer un nouveau tableau.

Cependant, nous pouvons passer un bloc à la méthode pour filtrer les éléments par classe. Un exemple est démontré dans ce qui suit:

IRB (Main): 017: 0> arr = [1, '1', 2, '2', 3, '3']

Pour trier les valeurs en double par classe, exécutez ce qui suit:

[cc lang = "text" width = "100%" height = "100%" échappé = "true" theme = "Blackboard" Nowrap = "0"]

[/ cc]

Nous appelons la méthode UNIQ sur ARR avec l'argument de la classe &:. Ceci est connu sous le nom de conversion «symbole à proc». Il convertit le symbole: classe en proc | obj | obj.classe .

Appeler la méthode unique avec le Proc en tant qu'argument renvoie un nouveau tableau qui ne contient que les éléments uniques basés sur la classe de chaque élément.

Dans ce cas, la méthode ne préserve qu'un 1, un «1», et ainsi de suite. Mais il maintient la première occurrence du nombre et la première occurrence de la chaîne.

En effet, il utilise la méthode de classe de l'élément. La classe des entiers et les cordes sont différentes.

Conclusion

Nous avons discuté de l'utilisation des méthodes UNIQ pour supprimer les valeurs en double d'un tableau d'entrée. Nous avons également appris à fonctionner en place, vous permettant de remplacer le tableau d'origine et de trier les valeurs en double en fonction de la classe parentale.