J'ai un tableau A. je voudrais vérifier si elle contient des valeurs en double. Comment pourrais-je le faire?
Réponses
Trop de publicités?Appelez simplement uniq
"(qu'il renvoie un nouveau tableau sans les doublons) et voir si l' uniq
ed matrice a moins d'éléments que l'original:
if a.uniq.length == a.length
puts "a does not contain duplicates"
else
puts "a does contain duplicates"
end
Notez que les objets dans le tableau doivent répondre à des hash
et eql?
dans un sens pour uniq
pour fonctionner correctement.
jmonteiro
Points
773
pinouchon
Points
7706
Si vous voulez retourner les doublons, vous pouvez faire ceci:
dups = [1,1,1,2,2,3].group_by{|e| e}.keep_if{|_, e| e.length > 1}
# => {1=>[1, 1, 1], 2=>[2, 2]}
Si vous voulez juste les valeurs:
dups.keys
# => [1, 2]
Si vous souhaitez que le nombre de doublons:
dups.map{|k, v| {k => v.length}}
# => [{1=>3}, {2=>2}]
fakeleft
Points
903