我有 2000 个联系人,我想查找重复项,而过滤器大约需要 1 分钟才能找到重复项。
let duplicateArray = contacts.filter { value in
contacts.filter({
$0.phoneNumbers.first?.value.value(forKey: "stringValue") as?
String ?? "" == value.phoneNumbers.first?.value.value(forKey:
"stringValue") as? String ?? ""
}).count > 1
}
最佳答案
让我们考虑一下这个数组
let array = [1,2,3,4,3,2]
使用字典,让我们计算每个元素在数组中出现的次数:
var dict : [Int: Int] = [:]
for element in array {
dict[element, default: 0] += 1
}
现在让我们构造一个新数组,其中包含在原始数组中多次出现的元素:
var output = dict.flatMap { (key, value) in
return Array(repeating: key, count: value == 1 ? 0 : value)
}
print(output) //[3, 3, 2, 2]
关于ios - 在更短的时间内过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57868896/