【问题标题】:AS3 Array questionAS3 数组问题
【发布时间】:2010-07-15 17:21:34
【问题描述】:
 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

【问题讨论】:

    标签: flash actionscript-3 arrays


    【解决方案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
    hello
    

    这是因为您将 secondarray 设置为与 firstarray 相同的数组引用。

    如果要将 firstarray 的内容复制到 secondarray 中,请使用 concat():

    secondarray = firstarray.concat();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-17
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      相关资源
      最近更新 更多