Swift version: 5.6
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()
SPONSORED Play is the first native iOS design tool created for designers and engineers. You can install Play for iOS and iPad today and sign up to check out the Beta of our macOS app with SwiftUI code export. We're also hiring engineers!
Sponsor Hacking with Swift and reach the world's largest Swift community!
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.