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