2010-07-15 155 views
-2
var firstarray:Array = new Array(); 


function traceArray(arr:Array){  
    for(var i:int = 0; i < arr.length; ++i) { 
     trace(firstarray[i].matrix);  
    } 
} 



for (var i:int = 0; i < 10; ++i) { 
    firstarray.push({ matrix:[1,0,0,1], prod:i}); 
} 

var secondarray:Array = new Array(); 
secondarray = firstarray; 
secondarray.push({ matrix:"hello" }); 

traceArray(firstarray); 

應該跟蹤結果是AS3數組問題

1,0,0,1 1,0,0,1 1,0,0,1 1,0,0,1
1,0,0,1 1,0,0,1 1,0,0,1 1,0,0,1
1,0,0,1 1,0,0,1你好

1,0,0,1 1,0,0,1 1,0,0, 1 1,0,0,1
1,0,0,1 1,0,0,1 1,0,0,1 1,0,0,1
1,0,0,1 1,0 ,0,1

回答

6

它將輸出:

1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
1,0,0,1 
hello 

這是因爲你secondarray設置爲相同的數組引用作爲firstarray。

如果你想的firstarray的內容複製到secondarray使用CONCAT():

secondarray = firstarray.concat(); 

事實上,因爲你是在陣列中使用數組,你可能必須循環每個元素和CONCAT複製內容每個矩陣項目。 (抱歉的編輯,但我只記得;))