2009年8月18日火曜日

配列を複製する

配列の内容をコピーしたいと思い、以下のように記述すると、参照している配列は同じなので、新しい配列(の参照)に記述した内容が、元の配列にも影響してしまう。

var arr1:Array = ['a','b','c','d','e'];
var arr2:Array = arr1;
trace('arr1 : ' + arr1.length); // arr1 : 5
trace('arr2 : ' + arr2.length); // arr2 : 5
arr2.shift();
trace('arr1 : ' + arr1.length); // arr1 : 4
trace('arr2 : ' + arr2.length); // arr2 : 4

Array クラスの slice 関数は、指定したインデックス間を抜き出して新しい配列を作ってくれる。インデックスを省略すると、開始から終了まで全ての値を抜き出してくれるので、これでOK。

var arr1:Array = ['a','b','c','d','e'];
var arr2:Array = arr1.slice();
trace('arr1 : ' + arr1.length); // arr1 : 5
trace('arr2 : ' + arr2.length); // arr2 : 5
arr2.shift();
trace('arr1 : ' + arr1.length); // arr1 : 5
trace('arr2 : ' + arr2.length); // arr2 : 4

0 件のコメント:

コメントを投稿