我有兩個陣列針對我比較[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.我該怎麼辦呢?
如果您的數組的值是themse中是唯一的lves,你應該考慮使用Sets,因爲他們已經建立了這些類型的操作的方法。如下所示:http://stackoverflow.com/questions/24589181/set-operations-union-intersection-on-swift-array – Ike10
你需要保持數組的順序嗎? – Paulw11
還有一點需要注意,像這樣構建循環會導致問題,因爲在循環時會改變數組的長度。 –