extension Array {
func removingDuplicates<T: Hashable>(byKey key: KeyPath<Element, T>) -> [Element] {
var result = [Element]()
var seen = Set<T>()
for value in self {
let key = value[keyPath: key]
if seen.insert(keyvalue[keyPath: key]).inserted {
result.append(value)
}
}
return result
}
}
extension Array {
func removingDuplicates<T: Hashable>(byKey key: (Element) -> T) -> [Element] {
var result = [Element]()
var seen = Set<T>()
for value in self {
let key = key(value)
if seen.insert(key(value)).inserted {
result.append(value)
}
}
return result
}
}