Javascript 复制数组会产生奇怪的结果(';复制';==引用)

Javascript 复制数组会产生奇怪的结果(';复制';==引用),javascript,arrays,reference,Javascript,Arrays,Reference,编辑:我遇到的问题是,我不知道js数组被视为对象,任何as so都被引用而不是复制。如果您对简单地反转js数组感兴趣,可以使用…reverse() 我想我可以用javascript简单地执行以下操作 var originalArray = [1,2,3,5,8,13]; var originalArrayCOPY = originalArray; console.log ("new copy = "+originalArrayCOPY); for(var zyx = 0; zyx <6;

编辑:我遇到的问题是,我不知道js数组被视为对象,任何as so都被引用而不是复制。如果您对简单地反转js数组感兴趣,可以使用…reverse()

我想我可以用javascript简单地执行以下操作

var originalArray = [1,2,3,5,8,13];
var originalArrayCOPY = originalArray;
console.log ("new copy = "+originalArrayCOPY);

for(var zyx = 0; zyx <6; zyx++){
    var xyz = 5-zyx;
    originalArray[zyx] = originalArrayCOPY[xyz];
}

console.log("original now "+originalArray);
console.log("copy ="+originalArrayCOPY);
var originalArray=[1,2,3,5,8,13];
var originalArrayCOPY=originalArray;
console.log(“新副本=“+originalArrayCOPY”);
对于(var zyx=0;zyx使用以下公式:

var originalArray = [1,2,3,5,8,13];
var originalArrayCOPY = originalArray.slice();
console.log ("new copy = "+originalArrayCOPY);
for(var zyx = 0; zyx <6; zyx++){
    var xyz = 5-zyx;
    originalArray[zyx] = originalArrayCOPY[xyz];
}

console.log("original now "+originalArray);
console.log("copy ="+originalArrayCOPY);
var originalArray=[1,2,3,5,8,13];
var originalArrayCOPY=originalArray.slice();
console.log(“新副本=“+originalArrayCOPY”);

对于(var zyx=0;zyx不要使用这样的变量名称…这会让大多数人感到困惑。不能不同意你对Javascript理解的评论。你可以称它为副本,但它不是,它是完全相同的数组。如果你想要一个真正的副本,请尝试
originalArray.slice()
。显然这两个数组“包含”相同的数据。所以当你需要深度复制时,赋值执行了浅层复制。@torazaburo,我可以看到这是怎么回事,在编程语言中,当你可以或不能直接复制数组时,会被称为什么?变量是一样的吗?@YvesDaoust它甚至不是浅层复制。它只是对同一个对象的两个引用。Cool.谢谢。如果可以的话,我想问一个关于引用的问题?如果array[keyN]也是一个数组,newArray=array[keyN]是复制的还是对array[keyN]的引用?回答我自己的问题,它仍然是一个引用而不是副本。实际的初始问题也可以用array.reverse()简单地解决