我有两个数组,我正在比较[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.我该怎么做?
答案 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