web-dev-qa-db-fra.com

Comment supprimer plusieurs éléments d'un tableau Swift?

Par exemple j'ai un tableau

var array = [1, 2, 3, 4]

Je veux supprimer un élément à l'index 1 puis à l'index 3 "qu'il soit dans une boucle for".

Mais supprimer l'élément à l'index 1 déplacera l'élément de l'index 3 à l'index 2, gâchant ainsi la deuxième suppression.

Aucune suggestion ?

13
Raffi

Compte tenu de votre tableau

var numbers = [1, 2, 3, 4]

et une Set des index que vous souhaitez supprimer

let indexesToRemove: Set = [1, 3]

Vous souhaitez supprimer les valeurs "2" et "4".

Ecrivez

numbers = numbers
    .enumerated()
    .filter { !indexesToRemove.contains($0.offset) }
    .map { $0.element }

Résultat

print(numbers) // [1, 3]
22
Luca Angeletti

C'est simple. supprimer des éléments de la fin.

Supprimer d'abord 3 et ensuite supprimer 1

9
Seifolahi

Swift 3: Utilisez la fermeture rapide pour effectuer la même opération.

Si votre tableau est comme

var numbers = [0, 1, 2, 3, 4, 5]

et index que vous souhaitez supprimer

let indexesToBeRemoved: Set = [2, 4]

numbers = numbers
    .enumerated()
    .filter { !indexesToRemove.contains($0.offset) }
    .map { $0.element }
and result

print (nombres) // [0, 1, 3, 5]

Swift 3: Voici la même opération avec un objet JSON (dictionnaire)

var arrayString = [
    [ "char" : "Z" ],
    [ "char" : "Y" ],
    [ "char" : "X" ],
    [ "char" : "W" ],
    [ "char" : "V" ],
    [ "char" : "U" ],
    [ "char" : "T" ],
    [ "char" : "S" ]
]

let arrayIndex = [2, 3, 5]

arrayString = arrayString.enumerated()
    .filter { !arrayIndex.contains($0.0 + 1) }
    .map { $0.1 }

print(arrayString)

[["char": "Z"], ["char": "W"], ["char": "U"], ["nom": "T"], ["nom": "S"]]

0
Krunal