ios - 在更短的时间内过滤数据

标签 ios arrays swift filter

我有 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/

相关文章:

ios - Unwind Segue 和多线程

C 程序不在 Windows 上执行。它在 Unix 上

iphone - NSMutableArray 中的 indexOfObject 返回垃圾值

java - 无法获取数组中的其余数字。 java

java - 对象作为数组

ios - IAP SKErrorDomain 代码=0 Swift

swift - 有人可以确定为什么我的索引超出范围吗?

json - iOS (Swift) 中使用 JSONSerialization 的 PUT 请求

ios - 如何将类型从 OpaquePointer 更改为我的数据模型变量?

ios - Textview scrollRangeToVisible 使范围到顶​​部