我以为我可以在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);
但我的结果很奇怪,我觉得我根本不懂javascript !!
新副本= 1,2,3,5,8,13
原版现在是13,8,5,5,8,13,
copy = 13,8,5,5,8,13,
我不明白为什么这不起作用,老实说我不确定为什么原始数组的COPY会发生变化。
如果我至少可以说出问题我可以问谷歌,如果你告诉我问题的名称,我将通过SO问题重命名。
答案 0 :(得分:2)
使用它:
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);
'='复制引用和slice()将生成数组的新副本。 见:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice