W Swift 3 i 4 wyglądałoby to tak:
Z liczbami, zgodnie z odpowiedzią Johnstona:
var a = [1,2,3,4,5,6]
for (i,num) in a.enumerated().reversed() {
a.remove(at: i)
}
print(a)
Ze stringami jako pytaniem OP:
var b = ["a", "b", "c", "d", "e", "f"]
for (i,str) in b.enumerated().reversed()
{
if str == "c"
{
b.remove(at: i)
}
}
print(b)
Jednak teraz w wersji Swift 4.2 lub nowszej istnieje jeszcze lepszy, szybszy sposób, który został zalecony przez Apple w WWDC2018:
var c = ["a", "b", "c", "d", "e", "f"]
c.removeAll(where: {$0 == "c"})
print(c)
Ten nowy sposób ma kilka zalet:
- Jest szybszy niż implementacje z
filter
.
- Eliminuje potrzebę odwracania tablic.
- Usuwa elementy w miejscu, a tym samym aktualizuje oryginalną tablicę zamiast przydzielać i zwracać nową tablicę.