How to copy array in JavaScript? [SOLVED]


Written By - Olorunfemi Akinlua
Advertisement

Introduction

In JavaScript, arrays are a powerful data type that allows you to store and manipulate collections of items. Sometimes, you may need to create a copy of an array for use in your code. There are a few different ways to create a copy of an array in JavaScript, depending on your needs and the structure of the array you are working with.

There are a few different ways to create a copy of an array in JavaScript, depending on your needs and the structure of the array you are working with.

In this article, we'll explore three common approaches for copying arrays in JavaScript: using the spread operator (...), using the slice() method, and using the JSON.parse() and JSON.stringify() methods.

 

Method-1: Using the spread operator (...)

One way to create a copy of an array is to use the spread operator (...). The spread operator allows you to expand an iterable (such as an array) into a list of elements. You can use the spread operator to create a copy of an array by enclosing the array in square brackets ([]) and using the spread operator to expand the array.

Here's an example of how to use the spread operator to create a copy of an array:

const originalArray = [1, 2, 3];
const copiedArray = [...originalArray];
console.log(copiedArray);

Output

[ 1, 2, 3 ]

In this example, we have an array called originalArray that we want to copy. We create a new array called copiedArray and use the spread operator to expand the elements of originalArray into the new array. This creates a shallow copy of the array, meaning that the new array contains the same elements as the original array, but the elements themselves are not copied.

The spread operator is a convenient and concise way to create a copy of an array, but it only works for shallow arrays. If the array contains nested arrays or objects, the spread operator will only create a shallow copy of the top-level elements, and the nested elements will be shared between the original array and the copy.

Advertisement

 

Method-2: Using the slice() method

Another way to create a copy of an array is to use the slice() method, which returns a new array that includes a portion of the elements of the original array. You can use this method to create a copy of an entire array by calling it with no arguments.

Here's an example of how to use slice() to create a copy of an array:

const originalArray = [1, 2, 3];
const copiedArray = originalArray.slice();
console.log(copiedArray);

Output

[ 1, 2, 3 ]

In this example, we have an array called originalArray that we want to copy. We create a new array called copiedArray and call the slice() method on originalArray with no arguments. This creates a shallow copy of the array, meaning that the new array contains the same elements as the original array, but the elements themselves are not copied.

Like the spread operator, slice() only creates a shallow copy of an array. If the array contains nested arrays or objects, the slice() method will only create a shallow copy of the top-level elements, and the nested elements will be shared between the original array and the copy.

 

Method-3: Using the JSON.parse() and JSON.stringify() methods

A third way to create a copy of an array is to use the JSON.parse() and JSON.stringify() methods, which allow you to convert a JavaScript object to a JSON string and vice versa. You can use these methods to create a deep copy of an array, meaning that the copy contains copies of all the elements in the original array, including any nested arrays or objects.

Here's an example of how to use JSON.parse() and JSON.stringify() to create a deep copy of an array:

const originalArray = [1, 2, [3, 4], { a: 5, b: 6 }];
const copiedArray = JSON.parse(JSON.stringify(originalArray));
console.log(copiedArray);

Output

Advertisement
[ 1, 2, [ 3, 4 ], { a: 5, b: 6 } ]

In this example, we have an array called originalArray that contains nested arrays and objects. We create a new array called copiedArray and use the JSON.stringify() method to convert originalArray to a JSON string. We then use the JSON.parse() method to parse the JSON string back into a JavaScript object, which creates a deep copy of the array.

The JSON.parse() and JSON.stringify() methods are a reliable way to create a deep copy of an array, but they can be slower and more resource-intensive than the other methods, especially for large or complex arrays.

 

Method-4: Using the map method

The fourth way to create a copy of an array is to use the map method which allows you to call a defined callback function on each element of an array and returns an array that contains the results. Here, you can use the map method by returning the element within the callback function that will be passed to the method.

Here’s an example of how to use the map method to copy an array in JavaScript.

const originalArray = [1, 2, 3];
const copiedArray = originalArray.map((x) => x);

console.log(copiedArray);

Output

[ 1, 2, 3 ]

In this example, we make use of the map() method is called on originalArray and it creates a new array with the same elements as originalArray.

Advertisement

The map() method takes a callback function as its argument. In this case, the callback function is (x) => x. This is a so-called "arrow function" in JavaScript, which is a concise way to write a function. The arrow function takes a single argument x and returns it. In this case, it means that the callback function simply passes each element of the original array to the new array, without modifying it.

 

Method-5: Using the filter method

The fifth way to create a copy of an array is to use the filter method which returns the elements of an array that meet the condition specified in a callback function. If we are to copy all the elements, we need a condition that will always be true. Similar to the way we used the map method earlier, we simply return true for every element.

Here’s an example of how to use the filter method to copy an array in JavaScript.

const originalArray = [1, 2, 3];
const copiedArray = originalArray.filter(() => true);

console.log(copiedArray);

Output

[ 1, 2, 3 ]

In this code, we declare and initialize an array called originalArray with values: 1, 2, and 3. Then, we create a new array called copiedArray by calling the filter method on originalArray. In this case, the callback function is an anonymous function that always returns true. This means that all elements of originalArray will pass the test and will be included in the new copiedArray array.

 

Method-6: Using the concat method

The last approach to copy an array in JavaScript is the use of the method called concat. The method combines two or more arrays. This method returns a new array without modifying any existing arrays. So to copy an array, we will simply concat the array to be copied with an empty array.

Here’s how we achieve the operation with the concat method.

const originalArray = [1, 2, 3];
const copiedArray = originalArray.concat();

console.log(copiedArray);

Output

[ 1, 2, 3 ]

 

Summary

There are a few different ways to create a copy of an array in JavaScript, depending on your needs and the structure of the array you are working with. You can use the spread operator (...) to create a shallow copy of an array, the slice() method to create a shallow copy of an array, or the JSON.parse() and JSON.stringify() methods to create a deep copy of an array. Also, the map, filter and concat methods are available to copy arrays in JavaScript. Choose the method that best meets your needs and is appropriate for the structure of the array you are working with.

 

References

Spread syntax (...) - JavaScript | MDN (mozilla.org)
Array.prototype.slice() - JavaScript | MDN (mozilla.org)
JSON.parse() - JavaScript | MDN (mozilla.org)
JSON.stringify() - JavaScript | MDN (mozilla.org)

Advertisement

 

Didn't find what you were looking for? Perform a quick search across GoLinuxCloud

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can either use the comments section or contact me form.

Thank You for your support!!

Leave a Comment