The Guide to Swift Arrays

During your programming adventures you might have stumbled upon the term Array a couple of times.  What is it and why is it important? To put it simply an Array is a collection of elements that is in an ordered series or arrangement. It is important because it organizes and compiles data so that it… View Article
Written by

Chris C

Updated on

Jun 09 2020

Table of contents

    During your programming adventures you might have stumbled upon the term Array a couple of times. 

    What is it and why is it important? To put it simply an Array is a collection of elements that is in an ordered series or arrangement.

    It is important because it organizes and compiles data so that it can be easily managed and accessed. To better understand Arrays it is best to go back to the basics.

    The basics

    Suppose that we have to store data of 5 random samples of a product rating, in our normal way to do things we would probably go about by making 5 separate variables named rating1, rating2, rating3, etc.

    var rating1 = 95
    var rating2 = 87
    var rating3 = 92
    var rating4 = 99
    var rating5 = 84 

    This is clearly correct but isn’t it a bit cluttered? It also needs to have all 5 variables declared and may be hard to track in the future.

    This is where Arrays come in, instead of the mess above we can simply write it as such:

    var rating = [95, 87, 92, 99, 84]

    Wasn’t that a lot easier and cleaner? There is a catch though, Array values can be extracted using indexes, and these indexes always start with 0 and not the usual 1.

    <pre><code class="swift">rating[0] // has the value 95
    rating[1] // has the value 87
    rating[2] // has the value 92
    rating[3] // has the value 99
    rating[4] // has the value 84</code></pre>

    A minor sacrifice if you ask me. How about we try printing our data? To do so just write it as

    print(rating[0]) // prints 95
    print(rating[1]) // prints 87
    print(rating[2]) // prints 92
    print(rating[3]) // prints 99
    print(rating[4]) // prints 84
    print(rating) // prints [95, 87, 92, 99, 84]

    Following the same logic we can then treat our array as if its a normal Int variable like so

    rating[0] = 78 //assigns a new value to the specified index
    rating[0] = 17 + 15 + 20 + 18 + 17 //treat it as such as long as it will result in an Int

    Of course like any other variable our array can also handle all data types but just remember that once you assign a data type to it then you should use it all throughout

    var colors = [“red”, “green”, “blue”]
    colors[0] = “bright red”

    It is also worth to note that we can also declare an empty array that can be done like so

    // short form easier to read
    var emptyNumbers: [Int] = []
    
    // can be typed in full form
    var emptyNumbers: Array[Int] = Array()

    Useful built-in functionalities

    Checking and determining number of content

    You can check if an array has no values by using isEmpty. Additionally, you can also check the number of content it has by using count

    var colors = [“red”, “green”, “blue”]
    	If colors.isEmpty{
    		print(“I don’t know any colors.”)
    } else {
    print(“I know \(colors,count) colors.”) //prints I know 3 colors.
    }

    Accessing First and Last content of the array

    You can check the first value of the array by using first. Conversely, you can also check the last value of the array by using last.

    var rating = [95, 87, 92, 99, 84]
    
    print(rating.first) //prints 95
    print(rating.last) //prints 84

    Subscript/Slice of the array

    You can get a subscript/slice of an array by using the Range operator ()

    var rating = [95, 87, 92, 99, 84]
    
    print(rating[0...2]) //prints [95, 87, 92]
    print(rating[1...4] //prints [87, 92, 99, 84]

    Adding and Removing elements to the array

    Basic functionalities

    You can add elements to the array by using append or insert([value], at: [index]). Conversely, you can also remove elements to the array by using remove(at: [index]).

    var rating = [95, 87, 92, 99, 84]
    
    rating.append(91) // rating is now  [95, 87, 92, 99, 84, 91]
    
    rating.insert(100, at: 2) // rating is now  [95, 87, 100, 92, 99, 84, 91]
    
    rating.remove(at: 3) //rating is now  [95, 87, 100, 99, 84, 91]

    Advanced functionalities

    What is interesting to note is that different combinations that you can add and remove data these are
    insert(contentsOf:[array], at: [index]) – Instead of just inserting a single value at a specified index we can insert a whole array or range of values inside as well.

    var colors = ["red", "green", "blue"]
    
    colors.insert(contentsOf: ["yellow","orange"], at: 1)
    
    print(colors) //prints ["red", "yellow", "orange", "green", "blue"]

    replaceSubrange([range from own array], with: [array] – We can also replace a whole range of values with another one.

    var rating = [95, 87, 92, 99, 84]
    
    rating.replaceSubrange(1...3, with: [100,90])
    
    print(rating) //prints [95, 100, 90, 84]

    append(contentsOf: [array]) – We can also add a range of values at the end of an array using

    var rating = [95, 87, 92, 99, 84]
    
    rating.append(contentsOf: [100, 90])
    
    print(rating) //prints [95, 87, 92, 99, 84, 100, 90]

    removeFirst() – is to remove the first value of the array 

    removeFirst([num]) – is to remove the first [num] of values from the array

    var rating = [95, 87, 92, 99, 84]
    
    rating.removeFirst()
    
    print(rating) //prints [87, 92, 99, 84]
    
    rating.removeFirst[2]
    
    print(rating) //prints [99, 84]

    Conversely you can also use

    removeLast() – is to remove the last value of the array  

    removeLast([num]) – is to remove the last [num] of values from the array

    var rating = [95, 87, 92, 99, 84]
    
    rating.removeLast()
    
    print(rating) //prints [95, 87, 92, 99]
    
    rating.removeLast[2]
    
    print(rating) //prints [95, 87]

    removeSubrange([range]) – is to remove elements in a specified range

    var rating = [95, 87, 92, 99, 84]
    
    rating.removeSubrange(1...3)
    
    print(rating) //prints [95, 84]

    Checking for data inside the array

    contains([element]) – is to check if the element/value is inside the array, returns a Bool

    It can also be written as contains(where: [element])

    var rating = [95, 87, 92, 99, 84]
    
    rating.contains(99) //returns true
    rating.contains(where: 90) //returns false

    min() – is to get the lowest value in the array. Note that if you compare strings it will get and compare the ASCII value of the letter/string

    var rating = [95, 87, 92, 99, 84]
    print(rating.min()) //prints 84
    
    var letters = [“a”, “b”, “A”]
    print(letters.min()) //prints A

    To check more into ASCII values you can check out this website http://www.asciitable.com/. In our case “A” is min because it has an ASCII value of 65, compared to a and b that has an ASCII value of 97 and 98 respectively.

    max() – is to get the highest value in the array. Note that if you compare strings it will get and compare the ASCII value of the letter/string

    var rating = [95, 87, 92, 99, 84]
    print(rating.max()) //prints 99
    
    var letters = [“a”, “b”, “A”]
    print(letters.max()) //prints b

    Miscellaneous uses for data inside the array

    sort() – sorts the value of the array. Note that if you compare strings it will get and compare the ASCII value of the letter/string

    You can also apply sort in descending using sort(by: > )

    var rating = [95, 87, 92, 99, 84]
    	rating.sort()
    print(rating) //prints [84, 87, 92, 95, 99]
    
    	rating.sort(by: >)
    print(rating) //prints [99, 95, 92, 87, 84]
    
    
    var letters = [“a”, “b”, “A”]
    letters.sort()
    print(letters) //prints [“A”, “a”, “b”]

    reverse() – it reverses the data inside the array

    var rating = [95, 87, 92, 99, 84]
    rating.reverse()
    print(rating) //prints [84, 99, 92, 87, 95]

    shuffle() – it shuffles the values of the array in a random order

    var rating = [95, 87, 92, 99, 84]
    rating.shuffle()
    print(rating) //prints [92, 95, 87, 99, 84]

    randomElement() – it takes a random element in the array

    var rating = [95, 87, 92, 99, 84]
    print(rating,randomElement()) //prints 99
    

    forEach{ [element] -> Void } – iterates over the array and does specified commands to it

    var rating = [95, 87, 92, 99, 84]
    
    rating.forEach{ num in 
    print(num) 
    } //prints the values of rating from 0 - 4

    This can be written in another way by utilizing loops

    for num in rating {
    print(num)
    } //prints the values from 0 - 4, same as above

    And that’s it! Hope this information will serve you well to better understand and utilize Arrays in the future 🙂



    Get started for free

    Join over 2,000+ students actively learning with CodeWithChris