Как удалить несколько элементов из быстрого массива?

Например, у меня есть массив

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

Я хочу удалить элемент по индексу 1, затем в индексе 3 "пусть он будет в цикле for" Но удаление элемента по индексу 1 приведет к перемещению элемента по индексу 3 до индекса 2 любых предложений?

Ответ 1

Учитывая ваш массив

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

и Set индексов, которые вы хотите удалить

let indexesToRemove: Set = [1, 3]

Вы хотите удалить значения "2" и "4".

Просто напишите

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

Результат

print(numbers) // [1, 3]

Ответ 2

Это просто. удалите элементы с конца.

Сначала удалите 3 и после этого удалите 1

Ответ 3

Swift 3: Используйте быстрое закрытие для выполнения той же операции.

Если ваш массив похож на

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

и индексы, которые вы хотите удалить

let indexesToBeRemoved: Set = [2, 4]

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

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

Swift 3: Вот такая же операция с JSON Object (dictionary)

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" ], [ "name": "T" ], [ "имя": "S" ]]