Cómo eliminar un elemento de una matriz en Swift
¿Cómo puedo desarmar/eliminar un elemento de una matriz en el nuevo lenguaje Swift de Apple?
Aquí hay un código:
let animals = ["cats", "dogs", "chimps", "moose"]
animals[2]
¿Cómo se podría eliminar el elemento de la matriz?
Aceptado
La let
palabra clave es para declarar constantes que no se pueden cambiar. Si desea modificar una variable, debe usar var
en su lugar, por ejemplo:
var animals = ["cats", "dogs", "chimps", "moose"]
animals.remove(at: 2) //["cats", "dogs", "moose"]
Una alternativa no mutante que mantendrá la colección original sin cambios es usarla filter
para crear una nueva colección sin los elementos que desea eliminar, por ejemplo:
let pets = animals.filter { $0 != "chimps" }
Dado
var animals = ["cats", "dogs", "chimps", "moose"]
Eliminar el primer elemento
animals.removeFirst() // "cats"
print(animals) // ["dogs", "chimps", "moose"]
Eliminar el último elemento
animals.removeLast() // "moose"
print(animals) // ["cats", "dogs", "chimps"]
Eliminar elemento en el índice
animals.remove(at: 2) // "chimps"
print(animals) // ["cats", "dogs", "moose"]
Eliminar elemento de índice desconocido
Para un solo elemento
if let index = animals.firstIndex(of: "chimps") {
animals.remove(at: index)
}
print(animals) // ["cats", "dogs", "moose"]
Para múltiples elementos
var animals = ["cats", "dogs", "chimps", "moose", "chimps"]
animals = animals.filter(){$0 != "chimps"}
print(animals) // ["cats", "dogs", "moose"]
Notas
- Los métodos anteriores modifican la matriz en su lugar (excepto
filter
) y devuelven el elemento que se eliminó. - Guía rápida para reducir el filtro de mapas
- Si no desea modificar la matriz original, puede usar
dropFirst
odropLast
para crear una nueva matriz.
Actualizado a Swift 5.2