配列の内容をコピーしたいと思い、以下のように記述すると、参照している配列は同じなので、新しい配列(の参照)に記述した内容が、元の配列にも影響してしまう。
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 件のコメント:
コメントを投稿