我无法复制数组。
var Mycollection = new Array("James","Jonh","Mary");
var Mycollection2 = Mycollection;
第一个数组中的任何更改也会在第二个数组中进行。
Mycollection.pop();
console.log(Mycollection.toString()) // ["James","Jonh"]
console.log(Mycollection2.toString())// ["James","Jonh"]
但是,当我使用文本类型
的变量时,不会发生这种情况答案 0 :(得分:5)
数组是对象,不像string,int等原始类型...... 获取对象的变量对应于对象的引用(指针), 而不是对象本身,所以不同的变量可以引用同一个对象。 基本类型的变量(字符串,整数等)与值相关联。
在您的情况下,您必须克隆对象数组以获得相同的值。
var Mycollection = new Array("James","Jonh","Mary");
var Mycollection2 = Mycollection.slice();
答案 1 :(得分:2)
Javascript通过引用传递数组,以使单独的数组执行:
var Mycollection = new Array("James","Jonh","Mary");
var Mycollection2 = Mycollection.slice();
答案 2 :(得分:1)
只需使用:
var Mycollection2 = Mycollection.slice(0);
复制数组
答案 3 :(得分:1)
您实际上是在代码中复制引用,
var Mycollection = new Array("James","Jonh","Mary");
var Mycollection2 = Mycollection; // makes both Mycollection2 and Mycollection referring to same array.
使用Array.slice()方法创建部分/全部数组的副本。
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"]