合并两个没有重复的数组

时间:2019-05-06 16:26:06

标签: swift

我有一个newArray和一个oldArray,如下所示。如果newArray具有oldArray中存在的任何项目,那么我想将其从oldArray中删除。我可以运行两个嵌套的for循环并检测要删除的重复项,但这将是O(n2)。我想知道是否有更好的处理方法?

我不能使用Set,因为需要保留订单。

  

newArray = [2,4,5]

     

oldArray = [1,2,3,5]

     

newArray = [2,4,5,1,3] //附加newArray和oldArray。

1 个答案:

答案 0 :(得分:1)

也许您毕竟应该使用Set! 设置遏制速度很快! https://developer.apple.com/documentation/swift/set/1540013-contains

 let setFirst = Set(first)
 var merge = first
 second.forEach { v in
     if !setFirst.contains(v) {
         merge.append(v)
     }
 }
 print(merge)

次要补充

对于功能风格和紧凑语法的爱好者:

let funcMerge = first + second.filter { !setFirst.contains($0) }