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

AI Hentai Generator
Generate AI Hentai for free.

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



Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

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...

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

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.

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

This tutorial will explain how to create pie, ring, and bubble charts using Chart.js. Previously, we have learned four chart types of Chart.js: line chart and bar chart (tutorial 2), as well as radar chart and polar region chart (tutorial 3). Create pie and ring charts Pie charts and ring charts are ideal for showing the proportions of a whole that is divided into different parts. For example, a pie chart can be used to show the percentage of male lions, female lions and young lions in a safari, or the percentage of votes that different candidates receive in the election. Pie charts are only suitable for comparing single parameters or datasets. It should be noted that the pie chart cannot draw entities with zero value because the angle of the fan in the pie chart depends on the numerical size of the data point. This means any entity with zero proportion

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. �...
