Say I have such an array:
arr = ['footballs_jumba_10', 'footballs_jumba_11', 'footballs_jumba_12',
'footballs_jumba_14', 'alpha_romeo_11', 'alpha_romeo_12',
'alpha_juliet_10', 'alpha_juliet_11']
If I wanted to return duplicates, (assuming any of these strings in the array were exactly identical, I would just
return arr.detect{ |a| arr.count(a) > 1 }
but, what if I wanted to get only duplicates of the first 10 characters of each element of the array, without knowing the variations beforehand? Like this:
['footballs_', 'alpha_rome', 'alpha_juli']
This is quite straightforward with the method
Arry#difference
that I proposed in my answer here:You could do something like this:
This will return unique duplicates. If you want all the duplicates, you can just use an
Array
.Also, this returns all the full representations of each duplicate as it seems more useful and probably what you want:
If you want only the partial duplicates you can change the condition to:
then:
Use
Array#uniq
: