Using the JavaScript spread operator

December 07, 2020JavaScript

2 min read

In JavaScript, the spread syntax is an ellipsis of three dots .... It is used to expand an iterable object into a list of its arguments. The spread syntax spreads array and objects into separate arguments.

The spread operator is quick and easy to use for adding items to arrays, combining arrays or objects, and spreading an array or object out. The spread operator was added to JavaScript in ES6 (ES2015), just like the rest parameters, which have the same syntax - an ellipsis of three dots.

Spreading an array

Let's look at an example use case of the spread operator using the Math.max() function. This function expects separate numbers. Trying to pass an array to it will give us a NaN (not a number) error.

Math.max(1, 3, 5); // 5
Math.max([1, 3, 5]); // NaN

Let's fix this NaN error by using the spread operator.

Math.max(...[1, 3, 5]); // 5

The spread operator placed before the array has spread out our [1, 3, 5] array into separate values of 1, 3, and 5.

Copying an array

The spread operator makes it easy to copy an array.

const brands = ['honda', 'audi', 'toyota', 'mazda'];
const brandsCopy = [...brands];

brands[0] = 'nissan'; // only element 0 of the brands array is changed
console.log(brands); // ['nissan', 'audi', 'toyota', 'mazda'] 
console.log(brandsCopy); // ['honda', 'audi', 'toyota', 'mazda'] 

Combining an array

The spread operator makes it easy to combine or concatenate arrays.

const brands = ['honda', 'toyota', 'nissan'];
const luxuryBrands = ['acura', 'lexus', 'infinity'];

console.log([...brands, ...luxuryBrands]); // ["honda", "toyota", "nissan", "acura", "lexus", "infinity"]

Adding items to an array

The spread operator makes it easy to add items to an array.

const techBrands = ['apple', 'microsoft', 'google'];
const allBrands = ['sony', 'samsung', ...techBrands];

console.log(allBrands) // ["sony", "samsung", "apple", "microsoft", "google"]

Combining objects

The spread operator makes it easy to combine objects.

const product = { name: 'apple', color: 'red' };
const cost = { price: 1.99, sale: 0.99 };
const item = { ...product, ...cost, quantity: 10 };

console.log(item); // {name: "apple", color: "red", price: 1.99, sale: 0.99, quantity: 10}