Swift version: 5.10
There are several ways of removing duplicate items from an array, but one of the easiest is with the following extension on Array
:
extension Array where Element: Hashable {
func removingDuplicates() -> [Element] {
var addedDict = [Element: Bool]()
return filter {
addedDict.updateValue(true, forKey: $0) == nil
}
}
mutating func removeDuplicates() {
self = self.removingDuplicates()
}
}
That provides two methods: one called removingDuplicates()
that returns an array with duplicates removed, and one called removeDuplicates()
that changes the array in place.
The method works using filter()
and a dictionary: when you call updateValue()
on a dictionary it returns nil if the key is new, so we can use that to figure out which items are unique.
For example:
let numbers = [1, 5, 3, 4, 5, 1, 3]
let unique = numbers.removingDuplicates()
SAVE 50% All our books and bundles are half price for Black Friday, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Available from iOS 8.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.