AS3阵列问题

时间:2010-07-15 17:21:35

标签: flash actionscript-3 arrays

 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);

跟踪结果应该是

  

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

1 个答案:

答案 0 :(得分: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();

实际上,由于您在数组中使用数组,因此可能必须循环每个元素并连接复制每个矩阵项的内容。 (抱歉编辑,但我记得。;))