检查数组是否包含 swift 中另一个数组的元素
Check if an array contains elements of another array in 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()
的 2 个数组之间是否存在差异
有帮助吗???谢谢
您可以简单地从您的第一个集合创建一个集合,并获取它与另一个集合的交集:
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([=11=]).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([=12=]).inserted }
}
}
用法:
let intersection = array1.intersection(array2) // ["user3", "user4"]
我需要检查一个数组是否至少包含另一个数组的一个或多个元素,并在 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([=11=]).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([=12=]).inserted }
}
}
用法:
let intersection = array1.intersection(array2) // ["user3", "user4"]