トップページ > 配列 > 配列のコピーを作る(スライス)



概要

配列のスライス、つまり特定部分だけをコピーするコードを書いてみましょう。

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にコピーされます。


var dest:Array = src.slice(0, 3);
trace(dest); // 1, 2, 3
 
slice(0, 3)で開始インデックスと終了インデックスを指定している状態です。
この場合、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
		}
	}
}
 

|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|