• an object that contains other objects
  • It's a list of objects

What makes an array an array

  • You can put any values inside it
  • In any order
  • They stay in order
  • Duplicates are fine

Creating an array

["apple", "banana", "cherry"]

square brackets on their own mean "please go create an array now"

and put these 3 other values inside it

Array Indexes

  • Every slot in the array has a serial number
  • You can retrieve any item in an array by its INDEX
  • An index is a number from 0 to infinity
    • actually to the size of the array
  • square brackets after an array mean "the whatever-th item in this array"

Array Indexes Exercise

Try this in node:

let fruits = ["apple", "banana", "cherry"]

Did you get the result you expected?

Why or why not?

Start At Zero

When counting,

humans start at one,

but computers start at zero.

So the first item in an array is number zero, not number one.

The End

Try this:


Did you get the result you expected?

Why or why not?

Undefined means none

by returning undefined, the computer is answering the question

"What is the 99th item?"

with the answer

"There is no 99th item."

Array Methods

MDN: Array

Reversing an array

let fruits = ["apple", "banana", "cherry"]

Turning an array into a string

fruits.join()           // apple,banana,cherry
fruits.join(" and ")    // apple and banana and cherry
fruits.toString()       // apple,banana,cherry
fruits.toSource()       // [ 'apple', 'banana', 'cherry' ]

Note that console.log uses toSource(), which is usually better for debugging than toString

Looping through an array with forEach

fruits.forEach( (fruit) => {
  console.log("I like " + fruit + "!")
phrase meaning
fruits.forEach(...) hey fruits, for each thing inside you,
(fruit) please name it fruit
=> and send it to
{ ... } this block of code
console.log(fruit) so I can print it to the terminal

MDN: Array.forEach

Looping through an array with for-of

Recently, JavaScript added for..of, which does for arrays what does for hashes (JS objects).

for (var fruit of fruits) { 
  console.log("I like " + fruit + "!")
phrase meaning
for in a loop,
of fruits take each thing inside fruits
var fruit name it fruit
{ ... } and send it to this block of code

Looping through an array with for

JavaScript inherited for(;;) from C; it's cumbersome but you should learn to recognize it.

for (var i=0; i < fruits.length; i++) { 
phrase meaning
for in a loop,
var i make an index variable named i
i=0 and initially set it to 0
i < fruits.length then, as long as i is less than the number of fruits
{ ... } execute this block of code
console.log(fruits[i]) print the ith element of the fruits array
i++ and then increment i before the next time through

See? Cumbersome.

Lab: loud backwards fruit

Given this array:

let fruits = ["apple", "banana", "cherry"]

write a program that prints:


Setting items in an array

The [] operator works for assignment as well.

fruits[0] = "Apricot"
fruits[1] = "Blueberry"


Checking an array

The includes method checks if an object is inside an array or not.

fruits.includes("apple")    // true

fruits.include("pizza")     // false

Remember, here we are sending a message to an array, asking if it includes a certain string.

LAB: enemies list refactoring

Refactoring is changing existing code so that it works the same, but is cleaner and easier to read.

In your old hello.js program you had an if statement to check if someone is your enemy. Something like:

if (name === "darth" || name === "voldemort" || name === "sauron")

I'd like you to refactor your old hello.js program to use the includes method to check if someone is your enemy. Is it possible to make that if statement more concise?