ActionScript 3.0入門ノート CS4でタグ「slice()」が付けられているもの

(section03-01 Arrayクラスの配列から抜粋)

 配列は数値やストリングなどと違ってオブジェクトなので、配列を変数に代入するとリファレンス型の変数になります。たとえば、配列の入った変数alistを変数blistに代入したとき、どちらも同じ配列を参照しています。配列alist、blistに対して値の追加などの操作を行ったとき、片方の配列に操作した内容が両方に影響してしまいます。

[:script:]配列を複製したつもりでも同じ配列を参照している
var alist:Array=[1,2,3];
//blistにalistを代入する
var blist:Array=alist;
alist.push("x");//alistに"x"を追加
blist.push("y");//blistに"y"を追加
//どちらも同じ値になっている
trace(alist);//出力:1,2,3,x,y
trace(blist);//出力:1,2,3,x,y
 配列を複製したい場合にはslice()が利用できます。slice()の引数を省略するとslice(0)を実行した場合と同じになり、配列のすべての値を複製した新しい配列を作ることができます。

[:script:]配列を複製する
var alist:Array=[1,2,3];
//blistにalistを複製して代入する
var blist:Array=alist.slice();
alist.push("x");//alistに"x"を追加
blist.push("y");//blistに"y"を追加
//alistとblistは個別の配列になっている
trace(alist);//出力:1,2,3,x
trace(blist);//出力:1,2,3,y
(section03-01 Arrayクラスの配列から抜粋)

 配列の一部を取り出すメソッドにはslice()とsplice()があります。どちらも取り出した値の配列を作ります。slice()では元の配列は変化しないのに対し、splice()の場合は抜き取った値が元の配列から取り除かれるという違いがあります。
 次の例はslice()を使って新しい配列を作り出しています。取り出す位置はslice(startIndex,endIndex)のように指定します。このとき、slice(1,4)ならば1〜3番目を取り出し、4番目を含まないので注意が必要です。
 次の例では配列allListから1〜3番目の値を複製して新しい配列selectListを作成します。配列のインデックスは0からカウントするので、1〜3番目は"b"、"c"、"d"になります。slice()で値を取り出しても元の配列allListの中身はそのままで変化していません。

[:script:]配列の1〜3番目の値を取り出す
var allList:Array=["a","b","c","d","e","f"];
var selectList:Array=allList.slice(1,4);
//取り出した配列
trace(selectList);//出力:b,c,d
//元の配列は変化しない
trace(allList);//出力:a,b,c,d,e,f
 slice()は2番目の引数を省略できます。slice(3)のように引数を1つだけ指定した場合は3番目(並びでは4個目)から最後までの値を指定したことになります。

[:script:]配列の3番目から最後までの値を取り出す
var allList:Array=["a","b","c","d","e","f"];
var selectList:Array=allList.slice(3);
trace(selectList);//出力:d,e,f
trace(allList);//出力:a,b,c,d,e,f
 引数をマイナスにすると末尾から個数を数えて取り出します。次の例は末尾から4個の値を取り出した配列を作ります。インデックス番号と違って1から数えるので注意してください。

[:script:]配列の後ろから4個の値を取り出す
var allList:Array=["a","b","c","d","e","f"];
var selectList:Array=allList.slice(-4);
trace(selectList);//出力:c,d,e,f
trace(allList);//出力:a,b,c,d,e,f

*初版ではsplice()の項に間違いがあります。訂正原稿を参照してください。
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

タグ

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ