JavaScript创建使用备份阵列

JavaScript创建使用备份阵列,javascript,arrays,Javascript,Arrays,只要看看代码,你就会明白我的意思: ​var aBackup = [3, 4]; // backup array ​​var a = aBackup; // array to work with is set to backup array a[0]--; // working with array.. a = aBackup; // array o work with will be rested console.log(a); // returns [2, 4] but should re

只要看看代码,你就会明白我的意思:

​var aBackup = [3, 4]; // backup array
​​var a = aBackup; // array to work with is set to backup array
a[0]--; // working with array..
a = aBackup; // array o work with will be rested
console.log(a);  // returns [2, 4] but should return [3, 4]
console.log(aBackup);​ // returns [2, 4] too​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​  but should return [3, 4] too

javascript对数组不使用指针吗?应该
​​var a=回退复制吗?否则,结果对我来说是正常的…

javascript不是对数组使用指针吗?应该
​​var a=回退复制吗?否则,结果对我来说似乎是正常的…

数组是对象的引用类型,因此对它所做的更改将更改它指向的基础值,a和aBackup将指向相同的值,对a所做的更改也将更改aBackup。

数组是对象的引用类型,因此,对它所做的更改将更改它所指向的基础值,a和aBackup将指向相同的值,对a所做的更改也将更改aBackup。

您需要制作数组的真实副本,而不仅仅是使用引用:

var aBackup = [3, 4]; // backup array
var a = aBackup.slice(0); // "clones" the current state of aBackup into a
a[0]--; // working with array..
a = aBackup.slice(0); // "clones" the current state of aBackup into a 
console.log(a);  // returns [3, 4] 
console.log(aBackup); // returns [3, 4]

有关
切片
-方法

的文档,请参阅。您需要制作阵列的真实副本,而不仅仅是使用引用:

var aBackup = [3, 4]; // backup array
var a = aBackup.slice(0); // "clones" the current state of aBackup into a
a[0]--; // working with array..
a = aBackup.slice(0); // "clones" the current state of aBackup into a 
console.log(a);  // returns [3, 4] 
console.log(aBackup); // returns [3, 4]

有关
切片
-method

的文档,请参阅,这是因为执行此操作时,您不是在复制阵列,而是在引用原始阵列

var a IS aBackup; // if you will

当您需要克隆备份阵列时。

这是因为当您这样做时,您不是在复制阵列,而是在引用原始阵列

var a IS aBackup; // if you will

您需要做的是克隆备份阵列。

可能的重复--尽管标题/问题中有术语jQuery,但解决方案与jQuery无关。@FelixKling抱歉,我看到了此重复项。每个人都应该投票决定是否关闭。可能的重复项--尽管标题/问题中有jQuery一词,但解决方案与jQuery无关。@FelixKling抱歉,我看到了重复项。每个人都应该投票结束。