检查一个数组是否包含swift中另一个数组的元素



我需要检查一个数组是否包含另一个数组的至少一个或多个元素,并用swift打印出来。这就是我的处境:

var array1 = ["user1", "user2", "user3", "user4"]
var array2 = ["user3, "user5", "user7", "user9, "user4"]
//I need to get back an array that says that both the arrays contains ex. "user3" and "user4"

我在网上搜索了一下,但只找到了相反的答案,这有助于检查使用array.symmetricDifference()的两个阵列之间是否存在差异

有什么帮助吗???感谢

您可以简单地从第一个集合创建一个集合,并获得它与另一个集合的交集:

let array1 = ["user1", "user2", "user3", "user4"]
let array2 = ["user3", "user5", "user7", "user9", "user4"]
let intersection = Array(Set(array1).intersection(array2)) // ["user4", "user3"] 

请注意,生成的集合的顺序是不可预测的。如果你想保留第一个集合的顺序,你可以创建一组第二个集合,并过滤不能插入其中的元素:

var set = Set(array2)
let intersection = array1.filter { !set.insert($0).inserted }  // ["user3", "user4"]

您也可以在RangeReplaceableCollection:上创建自己的交集方法

extension RangeReplaceableCollection {
func intersection<S: Sequence>(_ sequence: S) -> Self where S.Element == Element, Element: Hashable {
var set = Set(sequence)
return filter { !set.insert($0).inserted }
}
}

用法:

let intersection = array1.intersection(array2)  // ["user3", "user4"]

相关内容

  • 没有找到相关文章

最新更新