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

时间:2016-06-23 03:04:16

标签: ios swift

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

let filter = strongAgainstArray.filter{weakAgainstArray.contains($0)}

这将返回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)")
        }
    }
}

这很好用,但我们假设我的一个数组包含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())

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

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

let array = [7,7,9]
let test = Array(Set(array))

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

2 个答案:

答案 0 :(得分: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)
  

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

答案 1 :(得分:2)

如果订单很重要,请使用 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.allowsEditing = NO; imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentModalViewController:imagePicker animated:YES];

NSOrderedSet