The spread operator
ES6 introduced the spread operator (
...), which provides probably the easiest and most common way to create a shallow clone of an array.
let x = [1, 2, 3, 4]; let y = [...x];
Array.from() has a very powerful API that can be used for many different things, including creating a copy of an array.
let x = [1, 2, 3, 4]; let y = Array.from(x);
Similarly to the spread operator,
Array.prototype.slice() can be used to create a shallow copy of an array.
let x = [1, 2, 3, 4]; let y = x.slice();
Looking into one of the more unorthodox options,
Array.prototype.map() can be used to map each element of an array to itself to create a new array.
let x = [1, 2, 3, 4]; let y = x.map(i => i);
Array.prototype.filter() can be used to return
true for each and every element, resulting in a new array with all of the original array's elements.
let x = [1, 2, 3, 4]; let y = x.filter(() => true);
Object.assign() can be used in the exact same way as it's used to create a clone of an object, but for an array instead.
let x = [1, 2, 3, 4]; let y = Object.assign(, x);