i can't copy the array
本问题已经有最佳答案,请猛点这里访问。
我无法复制数组。
1 2 | var Mycollection = new Array("James","Jonh","Mary"); var Mycollection2 = Mycollection; |
在第一个数组中所做的任何更改也将在第二个数组中进行。
1 2 3 | Mycollection.pop(); console.log(Mycollection.toString()) // ["James","Jonh"] console.log(Mycollection2.toString())// ["James","Jonh"] |
但是,当我使用文本类型的变量时,不会发生这种情况。
数组是对象,与字符串、int等基元类型不同…获取对象的变量与对象的引用(指针)相对应,而不是对象本身,因此不同的变量可以引用同一个对象。基元类型的变量(字符串、int等)是否与值关联??
在您的情况下,您必须克隆对象数组以获得相同的值??
1 2 | var Mycollection = new Array("James","Jonh","Mary"); var Mycollection2 = Mycollection.slice(); |
Javascript通过引用传递数组,让单独的数组执行以下操作:
1 2 | var Mycollection = new Array("James","Jonh","Mary"); var Mycollection2 = Mycollection.slice(); |
您实际上是在复制代码中的引用,
1 2 | var Mycollection = new Array("James","Jonh","Mary"); var Mycollection2 = Mycollection; // makes both Mycollection2 and Mycollection referring to same array. |
使用array.slice()方法创建数组的部分/全部副本。
1 2 3 4 5 6 | var Mycollection1 = new Array("James","Jonh","Mary"); var Mycollection2 = Mycollection.slice(); Mycollection1.pop(); console.log(Mycollection1.toString()) // ["James","Jonh"] console.log(Mycollection2.toString()) // ["James","Jonh","marry"] |
imoB
只需使用:
复制数组