arrays - 在 swift 中比较两个数组有任何一个相同的元素

标签 arrays swift set compare contains

<分区>

需要比较两个数组, 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/

相关文章:

javascript - 基于分组使用源对象数组的属性创建对象数组

ios - 聚类谷歌地图标记并放大聚类

Scala:集合中的连续ID

python - 如何定义一组变量,以便程序响应列表中的任何项目被调用,python3

c# - 在 C# 中向字符串数组添加值

javascript - JS等待回调在for循环内完成执行

c - 数据结构中数组的插入和删除操作输出出错

ios - 解析通过 Alamofire (Swift) 收到的 JSON 数据时出错

ios - UIDatePicker - 允许在两个范围内选择时间

python - Python子集递归函数的这两段代码有什么区别?