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()
SPONSORED Alex is the iOS & Mac developer’s ultimate AI assistant. It integrates with Xcode, offering a best-in-class Swift coding agent. Generate modern SwiftUI from images. Fast-apply suggestions from Claude 3.5 Sonnet, o3-mini, and DeepSeek R1. Autofix Swift 6 errors and warnings. And so much more. Start your 7-day free trial today!
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.