You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Swift比较两个数组并移除相同元素获取差异数组

Swift 数组剔除共有元素实现方案

需求为从第一个数组中移除两个数组共有的元素,得到仅在第一个数组中存在的元素,以下是3种常用实现方案:

  • 方案1:保留原数组顺序,适配小数据量场景
    直接使用filter方法遍历第一个数组,过滤掉所有在第二个数组中存在的元素即可,输出结果完全匹配你给出的顺序要求:
    var string1 = ["A", "B", "C"]
    var string2 = ["B"]
    let result = string1.filter { !string2.contains($0) }
    // 输出结果:["A","C"]
    
  • 方案2:大数组性能优化版本
    当第二个数组元素量较大时,先把第二个数组转成Set再做存在性判断,能把判断的时间复杂度从O(n)降到O(1),运行效率更高:
    var string1 = ["A", "B", "C"]
    var string2 = ["B"]
    let excludeSet = Set(string2)
    let result = string1.filter { !excludeSet.contains($0) }
    
  • 方案3:不要求保留顺序的高效写法
    直接用Set的原生差集运算,运算效率最高,但输出结果是无序的,不会保留原数组的元素排列顺序:
    var string1 = ["A", "B", "C"]
    var string2 = ["B"]
    let result = Array(Set(string1).subtracting(Set(string2)))
    

内容的提问来源于stack exchange,提问作者Jack Chang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:48:03