Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove an element from an array in Swift

Tags:

arrays

swift

How can I unset/remove an element from an array in Apple's new language Swift?

Here's some code:

let animals = ["cats", "dogs", "chimps", "moose"]

How could the element animals[2] be removed from the array?

like image 207
Leopold Joy Avatar asked Sep 26 '22 12:09

Leopold Joy


People also ask

How do I remove an element from an array in Swift 5?

To remove an element from the Swift Array, use array. remove(at:index) method. Remember that the index of an array starts at 0. If you want to remove ith element use the index as (i-1).

How do you delete the first element of an array in Swift?

To remove first element from Array in Swift, call remove(at:) method on this array and pass the index 0 for at parameter. Or call removeFirst() method on the array.

How do you clear an array in Swift?

We can remove all elements of an array that satisfy a given predicate in Swift by using the removeAll(where:) method.


2 Answers

The let keyword is for declaring constants that can't be changed. If you want to modify a variable you should use var instead, e.g:

var animals = ["cats", "dogs", "chimps", "moose"]

animals.remove(at: 2)  //["cats", "dogs", "moose"]

A non-mutating alternative that will keep the original collection unchanged is to use filter to create a new collection without the elements you want removed, e.g:

let pets = animals.filter { $0 != "chimps" }
like image 398
mythz Avatar answered Oct 19 '22 20:10

mythz


Given

var animals = ["cats", "dogs", "chimps", "moose"]

Remove first element

animals.removeFirst() // "cats"
print(animals)        // ["dogs", "chimps", "moose"]

Remove last element

animals.removeLast() // "moose"
print(animals)       // ["cats", "dogs", "chimps"]

Remove element at index

animals.remove(at: 2) // "chimps"
print(animals)           // ["cats", "dogs", "moose"]

Remove element of unknown index

For only one element

if let index = animals.firstIndex(of: "chimps") {
    animals.remove(at: index)
}
print(animals) // ["cats", "dogs", "moose"]

For multiple elements

var animals = ["cats", "dogs", "chimps", "moose", "chimps"]

animals = animals.filter(){$0 != "chimps"}
print(animals) // ["cats", "dogs", "moose"]

Notes

  • The above methods modify the array in place (except for filter) and return the element that was removed.
  • Swift Guide to Map Filter Reduce
  • If you don't want to modify the original array, you can use dropFirst or dropLast to create a new array.

Updated to Swift 5.2

like image 266
Suragch Avatar answered Oct 19 '22 21:10

Suragch