iOS swift remove elements of an array from another array iOS swift remove elements of an array from another array swift swift

iOS swift remove elements of an array from another array


@Antonio's solution is more performant, but this preserves ordering, if that's important:

var array1 = ["a", "b", "c", "d", "e"]let array2 = ["a", "c", "d"]array1 = array1.filter { !array2.contains($0) }


The easiest way is to convert both arrays to sets, subtract the second from the first, convert to the result to an array and assign it back to array1:

array1 = Array(Set(array1).subtracting(array2))

Note that your code is not valid Swift - you can use type inference to declare and initialize both arrays as follows:

var array1 = ["a", "b", "c", "d", "e"]var array2 = ["a", "c", "d"]


Remove elements using indexes array:

  1. Array of Strings and indexes

    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"]
  2. Array of Integers and indexes

    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]



Remove elements using element value of another array

  1. Arrays of integers

    let arrayResult = numbers.filter { element in    return !indexesToRemove.contains(element)}print(arrayResult)//result - [0, 1, 2, 4, 6, 7, 9, 10, 11]
  2. Arrays of strings

    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"]