有几种方法可以从数组中删除重复的项目,但最简单的方法之一是在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()
}
}
这提供了两种方法:一种叫removeDuplicates(),它返回一个删除了重复项的数组,另一种叫做removeDuplicates(),可以在运行时更改数组。
该方法使用filter()和字典:当你在字典上调用updateValue()时,如果键是新的,则返回nil,因此我们可以使用它来确定哪些项是唯一的。
例如:
let numbers = [1, 5, 3, 4, 5, 1, 3]
let unique = numbers.removingDuplicates()
此方法支持iOS 8.0 以上版本。如果你有更好地方法,欢迎留言。