Learn two modern techniques for working with arrays and objects in JavaScript.
You can expand an array, object, or string using the spread operator ...
.
Let’s start with an example for arrays:
const a = [1, 2, 3];
To create a new array, you can use:
const b = [...a, 4, 5, 6];
You can also create a copy of an array using:
const c = [...a];
This also works for objects. You can clone an object using:
const newObj = { ...oldObj };
Using strings, the spread operator creates an array with each character in the string:
const hey = 'hey';
const arrayized = [...hey]; // ['h', 'e', 'y']
The spread operator has some useful applications. The most important one is the ability to use an array as a function argument in a simple way:
const f = (arg1, arg2) => {};
const a = [1, 2];
f(...a);
In the past, you could achieve this using f.apply(null, a)
, but that’s not as nice and readable.
The rest element is useful when working with array destructuring:
const numbers = [1, 2, 3, 4, 5];
[first, second, ...others] = numbers;
And with spread elements:
const numbers = [1, 2, 3, 4, 5];
const sum = (a, b, c, d, e) => a + b + c + d + e;
const sumOfNumbers = sum(...numbers);
In ES2018, rest properties were introduced, which are similar but for objects.
Rest Properties:
const { first, second, ...others } = {
first: 1,
second: 2,
third: 3,
fourth: 4,
fifth: 5
};
first; // 1
second; // 2
others; // { third: 3, fourth: 4, fifth: 5 }
Spread properties allow you to create a new object by combining the properties of the object passed after the spread operator:
const items = { first, second, ...others };
items; //{ first: 1, second: 2, third: 3, fourth: 4, fifth: 5 }