复制数组 javascript 拼接
我在代码中遇到了一个奇怪的错误,我不明白为什么会发生这种情况。
我有一个数组 array1。我通过使 array2 等于 array1 来复制 array1。然后我使用 splice 修改 array2 以添加数字。 Array1不应该被触及吗?但两者输出相同的变化。
var array1 = [0,1,2,3,4,5];
var array2 = array1;
array2.splice(1,0,1) //add
console.log(array1);
console.log(array2);
我假设我混淆了数组分配?在不发生这种情况的情况下复制数组的正确方法是什么?
干杯
I have come across a strange bug in my code and I cannot understand why it happens.
I have an array array1. I duplicate array1 by making array2 equal to array1. I then modify array2 using splice to add a number. Array1 should not be touched? But both output the same change.
var array1 = [0,1,2,3,4,5];
var array2 = array1;
array2.splice(1,0,1) //add
console.log(array1);
console.log(array2);
I am assuming I am confusing array assignment? What is the proper way to duplicate arrays without this happening?
Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用 array1.concat() 复制数组,而不是传递对 array1 的引用:
array.concat() 可以连接多个数组,但是如果传递一个空参数,则实际上是在连接一个没有任何内容的数组:克隆该数组。
请注意,任何数组和对象元素仍然是引用:
Use
array1.concat()
to duplicate the array instead of passing a reference toarray1
:array.concat()
can concatenate multiple arrays, but if you pass an empty argument, you're effectively concatenating an array with nothing: cloning the array.Note that any array and object elements are still references:
如果您使用 jQuery,您可以执行以下操作:
查看此示例。
If you are using jQuery you can do:
Check out this example.
数组和对象是通过引用复制的。试试这个:
Arrays and objects are copied by reference. Try this: