在 ES5 中,我们使用 concat 方法来复制数组。此外,一些开发人员使用 slice() 方法,通过传递 0 作为参数来对引用数组的所有元素进行切片并创建一个新数组。
示例
用户可以按照下面的示例使用 slice() 方法克隆数组。我们创建了 array1,其中包含不同数据类型的值。之后,我们使用 slice() 方法复制 array1 并将其存储在“clone”变量中。
<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>
用户已经了解了我们如何在 ES5 中克隆数组。
此外,用户可以考虑复制数组,就像使用赋值运算符复制字符串、数字和布尔值等普通变量一样。
用户在使用赋值运算符复制数组时可能会遇到问题。让我们通过下面的例子来理解它。
使用赋值运算符复制数组
在下面的示例中,字符串数组包含各种字符串。我们已将 strings 数组分配给 strings2 数组。之后,我们将新的字符串值推送到 strings2 数组中。
示例
<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>
在上面的输出中,用户可以观察到,当我们将字符串值推送到 strings2 数组时,它也推送到 strings 数组。为什么会发生这种情况?
在这里,可变和不可变对象的概念发挥了作用。
可变对象与不可变对象
在 JavaScript 中,数组和对象是可变的,这意味着我们可以在创建它们后初始化它们后更改它们的值。因此,上例中不存在 strings2 数组。当我们将 strings 数组分配给 strings2 数组时,它会生成对 strings 数组的引用。因此,每当我们更改 strings2 数组时,它也会更改 strings 数组。
因此,我们需要创建数组的实际副本,而不引用其他数组
现在,让我们学习如何在 ES6 中克隆数组。
在 ES6 中使用扩展运算符 (…) 克隆数组
展开运算符的语法是三个点 (…)。我们可以用它来像数组一样传播可迭代对象。扩展运算符创建数组或对象的新副本。
语法
用户可以按照以下语法使用扩展运算符复制数组。
let booleansCopy = [...booleans];
示例
在下面的示例中,我们创建了布尔数组,其中包含不同的布尔值。之后,我们使用扩展运算符创建了布尔数组的副本,并将该副本分配给 booleanCopy 变量。
在输出中,用户可以观察到 booleanCopy 数组包含与 boolean 数组包含的值相同的值。
<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>
示例
在下面的示例中,尺寸数组包含不同的数值。我们使用展开运算符创建了 size 数组的副本,并使用赋值运算符将该数组存储在sizedClone 变量中。
之后,我们将 60 推入 sizeClone 数组。
<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>
在上面的输出中,用户可以观察到 60 反映在 sizesClone 数组中,但没有反映在 Sizes 数组中,因为我们创建了数组的实际副本,而不是像示例 2 中那样引用数组.
现在,用户清楚地明白为什么在 ES6 中不使用赋值运算符以及为什么使用扩展运算符来克隆数组。
以上就是如何在 ES6 中克隆数组?的详细内容,更多请关注双恒网络其它相关文章!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
云资源网 » 如何在 ES6 中克隆数组?
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 你们有qq群吗怎么加入?