Как удалить несколько элементов из массива swift?

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

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

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

3 ответов


дан массив

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

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

let indexesToRemove: Set = [1, 3]

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

просто писать

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

результат

print(numbers) // [1, 3]

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

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


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

Если Ваш массив, как

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

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

let indexesToBeRemoved: Set = [2, 4]

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

печати(номера) // [0, 1, 3, 5]

Swift 3: Вот такая же операция с объектом JSON (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 + 1) }
    .map { .1 }

print(arrayString)

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