J'ai deux tableaux
var array1 = new Array ["a", "b", "c", "d", "e"]
var array2 = new Array ["a", "c", "d"]
Je veux supprimer des éléments de array2 de array1
Result ["b", "e"]
Le moyen le plus simple consiste à convertir les deux tableaux en ensembles, à soustraire le second du premier, à convertir le résultat en tableau et à le réattribuer à array1
:
array1 = Array(Set(array1).subtracting(array2))
Notez que votre code n'est pas valide Swift - vous pouvez utiliser l'inférence de type pour déclarer et initialiser les deux tableaux comme suit:
var array1 = ["a", "b", "c", "d", "e"]
var array2 = ["a", "c", "d"]
@ la solution d'Antonio est plus performante, mais cela préserve l'ordre, si c'est important:
var array1 = ["a", "b", "c", "d", "e"]
let array2 = ["a", "c", "d"]
array1 = array1.filter { !array2.contains($0) }
Supprimer les éléments à l'aide du tableau d'index:
Tableau de chaînes et d'index
let animals = ["cats", "dogs", "chimps", "moose", "squarrel", "cow"]
let indexAnimals = [0, 3, 4]
let arrayRemainingAnimals = animals
.enumerated()
.filter { !indexAnimals.contains($0.offset) }
.map { $0.element }
print(arrayRemainingAnimals)
//result - ["dogs", "chimps", "cow"]
Tableau d'entiers et d'index
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
let indexesToRemove = [3, 5, 8, 12]
numbers = numbers
.enumerated()
.filter { !indexesToRemove.contains($0.offset) }
.map { $0.element }
print(numbers)
//result - [0, 1, 2, 4, 6, 7, 9, 10, 11]
Supprimer les éléments en utilisant la valeur d'élément d'un autre tablea
Tableaux d'entiers
let arrayResult = numbers.filter { element in
return !indexesToRemove.contains(element)
}
print(arrayResult)
//result - [0, 1, 2, 4, 6, 7, 9, 10, 11]
Tableaux de chaînes
let arrayLetters = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]
let arrayRemoveLetters = ["a", "e", "g", "h"]
let arrayRemainingLetters = arrayLetters.filter {
!arrayRemoveLetters.contains($0)
}
print(arrayRemainingLetters)
//result - ["b", "c", "d", "f", "i"]
Vous pouvez créer des ensembles puis utiliser la méthode de soustraction
let setA = Set(arr1)
let setB = Set(arr2)
setA.subtract(setB)
hors de portée mais cela m'aiderait s'il avait été là. suppression du sous-tableau du tableau dans OBJECTIVE-C
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"not (self IN %@)", subArrayToBeDeleted];
NSArray* finalArray = [initialArray filteredArrayUsingPredicate:predicate];
j'espère que cela aidera jamais quelqu'un :)