« ピクセルディゾルブsample | メイン | Flash プロフェッショナル・スタイル CS3対応 »

3.1 配列の操作(3)配列の一部を切り出す

■配列の一部を切り出す slice()、splice()
配列の一部を切り出すメソッドにはslice()とsplice()があります。slice()は元の配列の値を複製して新しい配列を作るのに対し、splice()は元の配列から値を抜き取って新しい配列を作ります。splice()の場合は元の配列が変化します。
次の例はslice()を使って新しい配列を作り出しています。slice()にはslice(startIndex,endIndex)のように、元の配列から取り出す先頭の位置と最後の位置を引数で指定します。ただし、slice(2,5)ならば2、3、4のように5番目を含まないので注意が必要です。 次の例では配列allMembersから2、3,4番目の値を複製して新しい配列selectMembersを作成します。元の配列allMembersの中身はそのままで変化しません。配列は0番目からカウントするので、2、3,4番目は"c"、"d"、"e"になります。

[:sample:] slice-1.fla
例:
var allMembers:Array = new Array("a","b","c","d","e","f");
var selectMembers:Array = allMembers.slice(2,5);
trace(allMembers);
//出力:a,b,c,d,e,f
trace(selectMembers);
//出力:c,d,e

2番目の引数を省略してslice(2)のように引数を1つだけ指定すると3番目から最後までの値を指定したことになります。

[:sample:] slice-2.fla
例:
var allMembers:Array = new Array("a","b","c","d","e","f");
var selectMembers:Array = allMembers.slice(2);
trace(selectMembers);
//出力:c,d,e,f

引数をマイナスにすると末尾から数えたことになります。次の例は末尾から3個の値を取り出した配列を作ります。末尾から数える場合は0からではなく個数でカウントします。

[:sample:] slice-3.fla
例:
var allMembers:Array = new Array("a","b","c","d","e","f");
var selectMembers:Array = allMembers.slice(-3);
trace(selectMembers);
//出力:d,e,f

次の例はストリングを指定の区切り文字で配列に変換するsplit()とslice()を組み合わせて、URLから一部分を抜き出しています。まずURLの"/"を区切り文字として配列を作り、その配列の5番目(インデックスでは4番目)の値を抜き出しています。split()はStringクラスのメソッドです。なお、ストリングの一部を抜き出すには正規表現を利用する方法もあります。(p.??)

[:sample:] slice-4.fla
例:URLの部分を抜き出す
var blogUrl:String = "http://oshige.com/flash/as3note/";
var blogName:String = blogUrl.split("/").slice(4, 5).toString();
trace(blogUrl.split("/"));
//出力:http:,,oshige.com,flash,as3note,
trace(blogName);
//出力:as3note

一方、splice()は元の配列から値を抜き取って新しい配列を作ります。抜き取る際に値を複製しないので元の配列が変化します。次の例では配列stockListから2、3,4番目の値を抜き取って新しい配列pickUpListを作成します。元の配列stockListからは抜き取られた値が削除されます。

[:sample:] splice.fla
例:
var stockList:Array = new Array("a","b","c","d","e","f");
var pickUpList:Array = stockList.splice(2,5);
trace(stockList);
//出力:a,b
trace(pickUpList);
//出力:c,d,e,f

About

2007年6月12日 08:20に投稿されたエントリーのページです。

ひとつ前の投稿は「ピクセルディゾルブsample」です。

次の投稿は「Flash プロフェッショナル・スタイル CS3対応」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。