Supprimer les doublons d'éléments de la matrice en Ruby
J'ai un Rubis tableau qui contient les éléments en double.
array = [1,2,2,1,4,4,5,6,7,8,5,6]
Comment puis-je supprimer tous les doublons les éléments de ce tableau tout en conservant tous les éléments uniques, sans l'aide de boucles et itérations?
Vous devez vous connecter pour publier un commentaire.
La uniq méthode supprime tous les éléments en double et conserve tous les éléments dans le tableau.
L'une des nombreuses beautés de langage Ruby.
array.uniq!
qui fonctionne à la place.[{how: "are"}, {u:"doing"}, {how: "are"}].uniq => [{:how=>"are"}, {:u=>"doing"}]
.uniq!
est un mutateur. Au cas où vous vouliez préserver votrearray
.uniq!
il fait le travail sur l'objet lui-mêmeVous pouvez également retourner l'intersection.
Cela permettra également de supprimer les doublons.
a | a
(union) serait de faire le même truc.Vous pouvez supprimer le doublon éléments avec l'uniq méthode:
Ce qui pourrait également être utile de savoir, c'est que l'uniq méthode prend un bloc, de sorte que e.g si vous disposez d'un tableau de clés comme ceci:
et vous voulez savoir quels sont les fichiers uniques, vous pouvez le retrouver avec:
uniq
de ce tableau sans un bloc retourner la même valeur comme il le fait avec votre bloc.Si quelqu'un était à la recherche d'un moyen de supprimer toutes les occurrences de la répétition des valeurs, voir cette question.
a = [1, 2, 2, 3] a.find_all { |x| a.count(x) == 1 } # [1, 3]
Juste une autre alternative si quelqu'un se soucie.
Vous pouvez également utiliser le
to_set
méthode d'un tableau qui convertit le Tableau dans un Ensemble qui, par définition, définissez les éléments sont uniques.to_set
va allouer 4 objets, tandis queuniq
alloue une.Essayer avec Opérateur XOR en Ruby: