Remove duplicate elements from array in Ruby
You can remove the duplicate elements with the uniq method:
array.uniq # => [1, 2, 4, 5, 6, 7, 8]
What might also be useful to know is that uniq
takes a block, so if you have a have an array of keys:
["bucket1:file1", "bucket2:file1", "bucket3:file2", "bucket4:file2"]
and you want to know what the unique files are, you can find it out with:
a.uniq { |f| f[/\d+$/] }.map { |p| p.split(':').last }
array = array.uniq
uniq
removes all duplicate elements and retains all unique elements in the array.
This is one of many beauties of the Ruby language.
If someone was looking for a way to remove all instances of repeated values, see "How can I efficiently extract repeated elements in a Ruby array?".
a = [1, 2, 2, 3]
counts = Hash.new(0)
a.each { |v| counts[v] += 1 }
p counts.select { |v, count| count == 1 }.keys # [1, 3]
You can return the intersection.
a = [1,1,2,3]
a & a
This will also delete duplicates.