Lesson Weekend

Until now, we've always dealt with one piece of information at a time: one number, one string, one element on a page. However, we often need to group things together when we are coding. In programming, a group of things is often referred to as a collection.

In this lesson, we will cover a very common form of collecting items: the array. Arrays are enclosed in square brackets like this:

let array = [];

In the example above, we've created an empty array with square brackets. Note that we use let here, not const. If we start with an empty array, we are almost certainly going to want to change it. After all, an array isn't very useful if we aren't using it to hold things. Also, we'll find that const doesn't stop arrays from being mutated. We'll cover that soon.

We can also create an array that already has items in it. Here's an array that holds the months of the year:

> const months = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];

Why did we use const here? Well, presumably the months of the year aren't going to change. We can still communicate our intentions to other developers. We'll revisit this array in just a moment.

Arrays can hold strings, numbers, variables, and other JavaScript primitives and objects. They can even hold other arrays - or a mix of things. The items in an array are commonly referred to as elements. Here are some examples of arrays that hold strings and numbers:

  • [2, 5, 7, 3423, 85, 65]
  • ["e", "p", "i", "c", "o", "d", "u", "s"]
  • ["word", 45, "word2", 123]

Here's an example that holds a variable:

> const variable = "I'm a variable!";
> const things = [variable, "I'm not a variable!"];
> things;
["I'm a variable!", "I'm not a variable!"]

Here's an example that holds an expression:

> const numbers = [62, 62 / 2];
> numbers;
[62, 31]

Here's one that holds not just strings and numbers but other arrays:

> const mixOfArraysAndPrimitives = ["string", 123, ["another string", 456], 321, "yet another string", true];

The examples above show some of the elements we can put in an array. As we can see, arrays are pretty flexible - we even slipped a boolean into the array above. Arrays are really just containers for holding collections of things - amd we can put just about anything into an array. As developers, we can do things to organize arrays as we see fit, but from the perspective of JavaScript, arrays are just a bucket that can hold different kinds of elements.

Let's look at our original empty array again:

let array = [];

What if we want to add things to this array? There are many different methods that can be called on arrays. One of the most common is Array.prototype.push(), which allows you to add new objects to the end of an array.

Let's take a look:

let array = [];
array.push("hi");
> 1
array
> ["hi"]
array.push("there");
> 2
array
> ["hi", "there"]

When we use the Array.prototype.push() method on an array, the return value of the method is the new length of the array. In this case, it's 1. To see how the array has been modified, we can just check the variable array.

What happens if we try to push a new value into our months array?

> const months = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
> months.push("I'm not a month mwa ha ha");
13
> months
["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december", "I'm not a month mwa ha ha"];

We can see that const doesn't stop an array from being modified. const just stops variables from being reassigned or redeclared. That works great with primitives. If we change a variable holding the number 8 for instance (such as by trying to add another number to it), we are reassigning the variable.

That's not the case with arrays, though. When we modify an array, we aren't reassigning or redeclaring the variable. It's still the same array even though we've made changes to it. In the case of using const with an array, it's kind of like a permit that protects a house from being knocked down or altered (as you'll often see for historic homes). However, you can still change the furniture in the house even though the permit won't allow the house to be replaced. In this analogy, the array is the house and the elements are the furniture.

In JavaScript, you can't do this:

> const array = [];
> array = ["hi"];
Uncaught TypeError: Assignment to constant variable.

This is like building a house and then knocking it down and replacing it with another one. We assign an empty array to the variable array and then we try to reassign the value of array. As the error shows, we can't do that with a const.

Note the difference here:

> const array = [];
> array.push("hi");
1
> array
["hi"]

We didn't knock down the house here. Our array still exists - we just added an item to it. This is like adding a new piece of furniture to the house.

This is an important gotcha about using const with arrays. We can still modify the array (whether that means adding or removing items from it) so it's not truly constant. Why use const with arrays at all then?

Well, this is when we can use our code to communicate our intentions. When we use const with an array, we're telling other developers that the array shouldn't be modified. It also makes clear that you won't be modifying the array yourself.

When refactoring your code, you should always check to see if any of your variables need to be changed from let to const or vice versa.This makes your code clearer and easier to read.

In this lesson, we covered a few of the basics of arrays. By this point, you should know that an array is just a collection that can contain just about anything. We've also covered the Array.prototype.push() method, one of the most ubiquitous array methods, and discussed why const doesn't work as you might expect with arrays - and when you should use const with arrays anyway.

In the next lesson, we'll learn about the Array.prototype.length property of arrays. We'll also cover bracket notation, which we can use to look at specific values inside an array. Then, in the lesson after that, we'll cover commonly used array methods.

Terminology


  • Array: A collection of items grouped inside [].
  • Collection: A computer programming term for a list of items. An array is just one kind of collection.
  • Element: An item in an array.

Examples


Arrays can have just about anything as elements, even other arrays:

["string", 123, true, ["another string", 456], 321, 52 / 3]

Methods


Common array method:

  • Array.prototype.push(): Add an element to the end of an array.

Tip: Use let when you plan to modify an array and const when the array won't be modified. However, be aware that const won't actually stop you from modifying an array!

Lesson 4 of 34
Last updated September 2, 2020