Home  >  Article  >  Web Front-end  >  How to clone an array in ES6?

How to clone an array in ES6?

王林
王林forward
2023-09-12 08:09:031404browse

如何在 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!

Statement:
This article is reproduced at:tutorialspoint.com. If there is any infringement, please contact admin@php.cn delete