Ich habe zwei Arrays für die ich bin zu vergleichen [int]Wie entfernt man einen doppelten Wert in einem Array?
let filter = strongAgainstArray.filter{weakAgainstArray.contains($0)}
Dieses eine Anordnung von gemeinsamen Werte in den Arrays 2 zurückgibt. Ich möchte dann durch gehen und diese Werte aus jedem Array zu entfernen, was ich wie so tue
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)")
}
}
}
fein Dies funktioniert, aber sagen wir mal eine meiner Arrays für 12
als Beispiel zwei Einträge enthält. Wie entferne ich nur einen von ihnen? So wie es aussieht, werden alle Einträge von 12
vollständig entfernt.
EDIT
ich jetzt meine zwei Arrays zu vergleichen mit
let commonValues = Array(Set(strongAgainstArray).intersect(weakAgainstArray))
und dann diejenigen commonValues
von jedem Array mit
cleanStrongAgainstArray = Array(Set(strongAgainstArray).subtract(Set(commonValues)).sort())
cleanWeakAgainstArray = Array(Set(weakAgainstArray).subtract(Set(commonValues)).sort())
Dies ist eine viel bessere Gesamtlösung, aber ich stoße immer noch auf das gleiche Problem, wenn auch etwas anders als zuvor.
Auf dem Spielplatz, zum Beispiel ...
let array = [7,7,9]
let test = Array(Set(array))
Test kommt wieder [7, 9]
enthält, und ich brauche, dass zusätzliche 7. halten Wie kann ich das tun?
Wenn die Werte in Ihrem Arrays sind einzigartig innerhalb themse lves sollten Sie Sets verwenden, da sie Methoden für diese Art von Operationen enthalten. Wie hier gezeigt: http://stackoverflow.com/questions/24589181/set-operations-union-intersection-on-swift-array – Ike10
Müssen Sie die Reihenfolge des Arrays halten? – Paulw11
Auch eine Sache zu beachten, Strukturierung Ihrer Schleife wie diese kann Probleme verursachen, da Sie die Länge des Arrays ändern, während es durchschleifen. –