<分区>
需要比较两个数组, array1 = [1,2,3,4] array2 = [1,5,6,7,8] 结果应该是 bool 值。需要检查 array1 是否包含 array2 中的任何类似元素。所以有人帮我解决了上面的问题。
<分区>
需要比较两个数组, array1 = [1,2,3,4] array2 = [1,5,6,7,8] 结果应该是 bool 值。需要检查 array1 是否包含 array2 中的任何类似元素。所以有人帮我解决了上面的问题。
最佳答案
也许这种方式会满足您的需求:
let array1 = [1,2,3,4], array2 = [1,5,6,7,8]
let set1 = Set<Int>(array1), set2 = Set<Int>(array2)
let containsSimilar = set1.intersection(set2).count > 0
根据评论编辑
let array1: [Any] = [1,2,"a"], array2: [Any] = ["a","b","c"]
let set1 = Set<JananniObject>(array1.flatMap({ JananniObject(any: $0) }))
let set2 = Set<JananniObject>(array2.flatMap({ JananniObject(any: $0) }))
let containsSimilar = set1.intersection(set2).count > 0
JananniObject
是:
enum JananniObject: Equatable, Hashable {
case integer(Int)
case string(String)
static func ==(lhs: JananniObject, rhs: JananniObject) -> Bool {
switch (lhs, rhs) {
case (.integer(let integer0), .integer(let integer1)):
return integer0 == integer1
case (.string(let string0), .string(let string1)):
return string0 == string1
default:
return false
}
}
var hashValue: Int {
switch self {
case .integer(let integer):
return integer.hashValue
case .string(let string):
return string.hashValue
}
}
init?(any: Any) {
if let integer = any as? Int {
self = .integer(integer)
} else if let string = any as? String {
self = .string(string)
} else {
return nil
}
}
}
关于arrays - 在 swift 中比较两个数组有任何一个相同的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167188/