概要
配列のスライス、つまり特定部分だけをコピーするコードを書いてみましょう。
Array#slice()を使用します。
引数
引数
- startIndex:* = 0
- スライス開始位置を指定します。デフォルト値は0です。
- endIndex:* = 16777215
- スライス終了位置を指定します。デフォルト値は16777215です。
プログラム
var src:Array = new Array();
src.push(1, 2, 3, 4, 5, 6, 7, 8, 9);
まずは、スライス元の配列を用意しましょう。
var dest:Array = src.slice();
trace(dest); // 1,2,3,4,5,6,7,8,9
slice()に引数を何も入れないで実行すると、まるまるコピーされます。
このメソッドはあくまでもコピーするだけなので、元の配列の内容が変更されることはありません。
このメソッドはあくまでもコピーするだけなので、元の配列の内容が変更されることはありません。
var dest:Array = src.slice(3);
trace(dest); // 4,5,6,7,8,9
slice(3)のように開始インデックスのみ指定している状態です。
この場合、src[3]の部分からコピーが開始されるので4, 5, 6, 7, 8, 9の値がdestにコピーされます。
この場合、src[3]の部分からコピーが開始されるので4, 5, 6, 7, 8, 9の値がdestにコピーされます。
var dest:Array = src.slice(0, 3);
trace(dest); // 1, 2, 3
slice(0, 3)で開始インデックスと終了インデックスを指定している状態です。
この場合、src[0]から3つ分だけコピーする、という意味なので1, 2, 3の値がdestにコピーされます。
この場合、src[0]から3つ分だけコピーする、という意味なので1, 2, 3の値がdestにコピーされます。
var dest:Array = src.slice(-3);
trace(dest); // 7,8,9
マイナスの値をインデックスに指定することも出来ます。
この配列の場合、
| インデックス | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| インデックス | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
| 値 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
という風になるので、slice(-3)だと7, 8, 9の値をdestにコピーします。
検証用コード
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var src:Array = new Array();
src.push(1, 2, 3, 4, 5, 6, 7, 8, 9);
var dest:Array = src.slice(-3);
trace(dest); // 7,8,9
}
}
}
このwikiの更新情報RSS