How to clone an array in ES6?
In ES5, we use the concat method to copy an array. Additionally, some developers use the slice() method, which slices all elements of the referenced array and creates a new array by passing 0 as argument.
Example
Users can follow the example below to clone an array using the slice() method. We have created array1 which contains values of different data types. After that, we copy array1 using slice() method and store it in "clone" variable.
<html> <body> <h2>Using the <i>slice()</i> method to clone the array in JavaScript</h2> <div id = "output"> </div> <script> let output = document.getElementById('output'); let array1 = [10, "hello", 30, true]; output.innerHTML += "The original array: " + array1 + " <br>"; let clone = array1.slice(0); output.innerHTML += "The cloned array: " + clone + " <br>"; </script> </body> </html>
Users have already seen how we can clone arrays in ES5.
Additionally, users can consider copying arrays just like ordinary variables such as strings, numbers, and Boolean values using the assignment operator.
Users may encounter problems when copying arrays using assignment operators. Let us understand it through the following example.
Copy array using assignment operator
In the example below, the string array contains various strings. We have assigned the strings array to the strings2 array. After that, we push the new string value into the strings2 array.
Example
<html> <body> <h2>Using the <i>assignment</i> operator to clone the array in JavaScript</h2> <div id = "output"> </div> <script> let output = document.getElementById('output'); let array1 = ["Hi", " users", "Welcome"]; let array2 = array1; array2.push("New value"); output.innerHTML += "The value of array2: " + array2 + " <br>"; output.innerHTML += "The value of array1: " + array1 + " <br>"; </script> </body> </html>
In the above output, the user can observe that when we push the string value to the strings2 array, it is also pushed to the strings array. Why does this happen?
Here, the concepts of mutable and immutable objects come into play.
Mutable objects and immutable objects
In JavaScript, arrays and objects are mutable, which means we can change their values after initializing them after creating them. Therefore, the strings2 array does not exist in the above example. When we assign the strings array to the strings2 array, it generates a reference to the strings array. So whenever we change the strings2 array, it also changes the strings array.
Therefore, we need to create an actual copy of the array without referencing the other array
Now, let’s learn how to clone an array in ES6.
Clone an array using the spread operator (...) in ES6
The syntax of the expansion operator is three dots (...). We can use this to spread iterable objects like arrays. The spread operator creates a new copy of an array or object.
grammar
Users can copy arrays using the spread operator according to the following syntax.
let booleansCopy = [...booleans];
Example
In the example below, we have created a boolean array containing different boolean values. After that, we create a copy of the boolean array using the spread operator and assign the copy to the booleanCopy variable.
In the output, the user can observe that the booleanCopy array contains the same values as the boolean array contains.
<html> <body> <h2>Using the <i> spread operator </i> to clone the array in JavaScript</h2> <div id = "output"> </div> <script> let output = document.getElementById('output'); let booleans = [true, false, false, true, true]; let booleansCopy = [...booleans]; output.innerHTML += "The values of the booleansCopy array: " + booleansCopy + "<br>"; </script> </body> </html>
Example
In the example below, the dimensions array contains different numerical values. We created a copy of the size array using the spread operator and stored the array in the sizedClone variable using the assignment operator.
Afterwards, we push 60 into the sizeClone array.
<html> <body> <h2>Using the <i>spread</i> operator to clone the array in JavaScript</h2> <div id = "output"> </div> <script> let output = document.getElementById('output'); let sizes = [34, 43, 45, 47, 49, 50]; output.innerHTML += "-------Before Push-------" + "<br>"; output.innerHTML += "The values of the sizes array: " + sizes + "<br>"; let sizesClone = [...sizes]; output.innerHTML += "The values of the sizesClone array: " + sizesClone + "<br>"; sizesClone.push(60); output.innerHTML += "------After Push------" + "<br>"; output.innerHTML += "The values of the sizes array: " + sizes + "<br>"; output.innerHTML += "The values of the sizesClone array:" + sizesClone + "<br>"; </script> </body> </html>
In the above output, the user can observe that 60 is reflected in the sizesClone array but not in the Sizes array because we create an actual copy of the array instead like in example 2 Reference array.
Now, users clearly understand why assignment operators are not used in ES6 and why spread operators are used to clone arrays.
The above is the detailed content of How to clone an array in ES6?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

Learning JavaScript is not difficult, but it is challenging. 1) Understand basic concepts such as variables, data types, functions, etc. 2) Master asynchronous programming and implement it through event loops. 3) Use DOM operations and Promise to handle asynchronous requests. 4) Avoid common mistakes and use debugging techniques. 5) Optimize performance and follow best practices.

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

Discussion on the realization of parallax scrolling and element animation effects in this article will explore how to achieve similar to Shiseido official website (https://www.shiseido.co.jp/sb/wonderland/)...

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...
