2010-07-15 3 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 скопировать содержимое каждого элемента матрицы. (Извините за изменения, но я только что вспомнил.;))

Смежные вопросы