In Swift 3 und 4 wäre dies:
Mit Zahlen nach Johnstons Antwort:
var a = [1,2,3,4,5,6]
for (i,num) in a.enumerated().reversed() {
a.remove(at: i)
}
print(a)
Mit Strings als OP-Frage:
var b = ["a", "b", "c", "d", "e", "f"]
for (i,str) in b.enumerated().reversed()
{
if str == "c"
{
b.remove(at: i)
}
}
print(b)
In Swift 4.2 oder höher gibt es jedoch noch einen besseren und schnelleren Weg , den Apple im WWDC2018 empfohlen hat:
var c = ["a", "b", "c", "d", "e", "f"]
c.removeAll(where: {$0 == "c"})
print(c)
Dieser neue Weg hat mehrere Vorteile:
- Es ist schneller als Implementierungen mit
filter
.
- Die Umkehrung von Arrays entfällt.
- Es entfernt Elemente an Ort und Stelle und aktualisiert somit das ursprüngliche Array, anstatt ein neues Array zuzuweisen und zurückzugeben.