Arrays 比较swift中相同元素的多个数组
我对swift和编程都是新手。我在一个数据库中有多个名称数组,我需要检查这些数组中是否有相同的名称。 我找到了一些比较两个数组的解决方案,但不是多个,所以我编写了一些附加代码。 但就性能而言,我认为这不是最佳实践。而且,这也不是先添加所有名称,然后删除重复名称的最佳方法 有人对我的问题有更好的想法/解决方案吗 代码:Arrays 比较swift中相同元素的多个数组,arrays,swift,Arrays,Swift,我对swift和编程都是新手。我在一个数据库中有多个名称数组,我需要检查这些数组中是否有相同的名称。 我找到了一些比较两个数组的解决方案,但不是多个,所以我编写了一些附加代码。 但就性能而言,我认为这不是最佳实践。而且,这也不是先添加所有名称,然后删除重复名称的最佳方法 有人对我的问题有更好的想法/解决方案吗 代码: 如果您只是想检查一个名称是否出现在多个集合中,我认为最好的方法是创建一个包含所有名称的集合,并过滤重复项,如图所示 扩展RangeReplacableCollection,其中元
如果您只是想检查一个名称是否出现在多个集合中,我认为最好的方法是创建一个包含所有名称的集合,并过滤重复项,如图所示
扩展RangeReplacableCollection,其中元素:Hashable{
重复变量:Self{
变量集:集=[]
筛选的变量:Set=[]
返回筛选器{!set.insert($0).inserted&&filtered.insert($0.inserted}
}
}
//输出应为:彼得、凯瑟琳、迈克、莎拉、克里斯
打印(姓名、副本)/[“迈克”、“凯瑟琳”、“克里斯”、“莎拉”、“彼得”]
如果您只是想检查一个名称是否出现在多个集合中,我认为最好的方法是创建一个包含所有名称的集合,并过滤重复项,如图所示
扩展RangeReplacableCollection,其中元素:Hashable{
重复变量:Self{
变量集:集=[]
筛选的变量:Set=[]
返回筛选器{!set.insert($0).inserted&&filtered.insert($0.inserted}
}
}
//输出应为:彼得、凯瑟琳、迈克、莎拉、克里斯
打印(姓名、副本)/[“迈克”、“凯瑟琳”、“克里斯”、“莎拉”、“彼得”]
当您在谈论数据库时,最好的方法是在插入新对象之前检查是否有重复项。@vadian完全正确,它们在数据库中多次出现,这是因为他们注册了一些东西,在这种情况下,他们注册了多个东西,我只想让注册了多个东西的人注册你的扩展来删除重复项,因为你在谈论数据库,最好的方法是在插入新对象之前检查重复项。@vadian他们完全正确在数据库中有很多次,就是他们注册了一些东西,在这种情况下,他们注册了很多东西,我只想让那些注册了很多东西的人
import UIKit
let array1 = ["Max", "Peter","Kathrin", "Sara", "Kirsten", "Mike", "Elon"] // Peter, Kathrin, Mike, Sara
let array2 = ["Pamela", "Chris", "James", "Sebastian", "Mike"] // Mike, Chris
let array3 = ["John", "Daniel", "Susan", "Mathias", "Mike", "Donald"] // Mike
let array4 = ["Tim", "Kathrin", "Alan", "Chris", "Amy", "Sara"] // Kathrin, Chris
let array5 = ["Cara", "Charly", "Emily", "Maja", "Peter", "Sara"] // Peter, Sara
// Output should be: Peter, Kathrin, Mike, Sara, Chris
var array = [Array<String>]()
array.append(array1)
array.append(array2)
array.append(array3)
array.append(array4)
array.append(array5)
var names = [String]()
for i in 0...array.count - 2 {
for z in 1...array.count - 1 {
if z + i < array.count {
let commonElements = Array(Set(array[i]).intersection(Set(array[z+i])))
names.append(contentsOf: commonElements)
}
}
}
print(names.removeDuplicates())
extension Array where Element: Hashable {
func removeDuplicates() -> [Element] {
var result = [Element]()
for value in self {
if result.contains(value) == false {
result.append(value)
}
}
return result
}
}
let array1 = ["Max", "Peter","Kathrin", "Sara", "Kirsten", "Mike", "Elon"]
let array2 = ["Pamela", "Chris", "James", "Sebastian", "Mike"]
let array3 = ["John", "Daniel", "Susan", "Mathias", "Mike", "Donald"]
let array4 = ["Tim", "Kathrin", "Alan", "Chris", "Amy", "Sara"]
let array5 = ["Cara", "Charly", "Emily", "Maja", "Peter", "Sara"]
var names: [String] = []
names.append(contentsOf: array1)
names.append(contentsOf: array2)
names.append(contentsOf: array3)
names.append(contentsOf: array4)
names.append(contentsOf: array5)
extension RangeReplaceableCollection where Element: Hashable {
var duplicates: Self {
var set: Set<Element> = []
var filtered: Set<Element> = []
return filter { !set.insert($0).inserted && filtered.insert($0).inserted }
}
}
// Output should be: Peter, Kathrin, Mike, Sara, Chris
print(names.duplicates) // ["Mike", "Kathrin", "Chris", "Sara", "Peter"]