array.push添加到错误的数组

时间:2013-07-09 14:30:56

标签: javascript createjs

我创建了2个数组,answeredArrcorrectArr;保持游戏的信息。第一次游戏完成后,我将正确的答案数组复制到答案数组:

answeredArr = correctArr;

在此之后,每次answeredArr.push(variable);correctArr也会更新。

有很多代码,所以我不愿意发布所有代码。

2 个答案:

答案 0 :(得分:4)

数组对象。当您执行objB = objA时,objAobjB指向内存中的相同位置,换句话说,它们在不同的名称下是相同的。

幸运的是, Array 有一个内置的方法Array.prototype.slice,这使得克隆很容易。

var a1 = [], a2;
a2 = a1;         // a1 === a2
a2 = a1.slice(); // a1 !== a2, but identical.

答案 1 :(得分:0)

Javascript中的数组是通过引用而不是值来处理的,所以当你这样做时:

answeredArr = correctArr;

将answerArr的引用设置为与correctArr的引用相同。此后,对一个的任何操作也会影响另一个,因为它们指向同一个数组。

您需要克隆数组,而不是复制引用。一个简单的方法是:

var answeredArr = correctArr.slice(0);