编辑:我遇到的问题是我不知道 js 数组被视为对象,并且任何数组都被引用而不是复制。如果您有兴趣简单地反转 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);
但是我的结果太奇怪了,我觉得我根本不懂javascript!!
新副本 = 1,2,3,5,8,13
原来现在13,8,5,5,8,13,
复制=13,8,5,5,8,13,
我不明白为什么这不起作用,而且我真的不确定为什么原始数组的副本会被更改。
如果我至少能说出问题的名称,我可以问谷歌,如果你告诉我问题的名称,我会用SO问题重命名。
最佳答案
使用这个:
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
关于javascript - 复制数组会产生奇怪的结果 ('copying' ==引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26969283/