如何删除数组中的一个重复值?

Col*_*ane 0 ios swift

我有两个数组,我正在比较[Int]

let filter = strongAgainstArray.filter{weakAgainstArray.contains($0)}
Run Code Online (Sandbox Code Playgroud)

这将返回2个数组中的公共值数组.然后我想通过并从每个数组中删除这些值,我正在这样做

for item in filter {
    for var i = 0; i < strongAgainstArray.count; i += 1 {
        if item == strongAgainstArray[i] {
            strongAgainstArray.removeAtIndex(i)
            print("Removing a Strong against index \(item)")
        }
    }
    for var i = 0; i < weakAgainstArray.count; i += 1 {
        if item == weakAgainstArray[i] {
            weakAgainstArray.removeAtIndex(i)
            print("Removing a Weak against index \(item)")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我们可以说我的一个数组包含两个条目12作为示例.我如何只删除其中一个?目前,所有条目12都被完全删除.

编辑

我现在正在比较我的两个数组

let commonValues = Array(Set(strongAgainstArray).intersect(weakAgainstArray))

然后是commonValues每个数组中的那些

cleanStrongAgainstArray =  Array(Set(strongAgainstArray).subtract(Set(commonValues)).sort())

cleanWeakAgainstArray = Array(Set(weakAgainstArray).subtract(Set(commonValues)).sort())
Run Code Online (Sandbox Code Playgroud)

这是一个更好的整体解决方案,但我仍然最终遇到了同样的问题,尽管与以前略有不同.

在操场上,例如......

let array = [7,7,9]
let test = Array(Set(array))
Run Code Online (Sandbox Code Playgroud)

测试回来了[7, 9],我需要保留额外的7.我该怎么做?

Pau*_*w11 5

如果数组的顺序不重要,那么您可以使用Sets轻松实现整个解决方案:

let dirtyArray = [1,4,6,1,56,4,4,66,23,3,3,12]
let dirtyArray1 = [3,1,6,99,54]

let cleanArray = Array(Set(dirtyArray).union(Set(dirtyArray1)))

print (cleanArray)
Run Code Online (Sandbox Code Playgroud)

[12,54,23,4,6,66,99,56,1,3]