javascript - 复制数组会产生奇怪的结果 ('copying' ==引用)

标签 javascript arrays reference

编辑:我遇到的问题是我不知道 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/

相关文章:

javascript - 在 JavaScript (nodejs) 中连接多个数组

更改指针的值而不在函数中调用它?

c++ - 可以从纯虚函数返回引用吗?

java - 在 IE9 和 IE9 平台预览版中,我无法再从 Java Applet 调用 Javascript 方法

javascript - 我可以使用 Javascript 数组对象作为函数中的参数吗?如何?

javascript - JSHint 无法识别 Visual Studio Code (VSCode) 中的 Async/Await 语法

Javascript 检查数组中是否有从其他数组派生的数据

c++ - 通过引用传递 2D vector

javascript - Google map API 找不到 $(document).ready 中定义的回调

javascript - 删除与另一个 JSON 匹配的 JSON