我很困惑。我有一个数组myArray = [2, 2, 2, 1, 1]
但不知道,它采用了数组testArray的值。
if(count == 5) {
alert("beginn" + myArray[2]);
var testArray=testFunction(myArray);
alert("middle" + myArray[2]);
var testCount=countNumber(testArray);
if (testCount = 3){
count = 4;
}
}
这是功能:
function testFunction(testArray){
var minimum=Math.min.apply(Math,testArray);
var i=0;
var position=-1;
for(i;i<testArray.length;i++){
if(position==-1){
if(minimum==testArray[i]){
position=i;
}
}
}
i = 0;
for(i; i < testArray.length; i++){
if(i != position){
testArray[i] = testArray[i] - 1;
}
}
return testArray;
}
所以在函数testArray正确[1,1,1,1,0]
之后,但不幸的是myArray也不知道为什么。
答案 0 :(得分:3)
在JavaScript中,当您将数组对象分配给另一个变量时,您基本上是指定一个指向原始数组对象的指针。这意味着如果你这样做:
var myArray = [1,2,3,4];
var testArray = myArray;
那么对testArray所做的任何更改也将对myArray进行,因为它们实际上是同一个数组!
要防止myArray
发生变化,您需要传递数组的副本:
var myCopy = myArray.slice(0);
var testArray=testFunction(myCopy);