Как удалить несколько элементов из быстрого массива?
Например, у меня есть массив
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" ]]