配列から値を抜き取って新しい配列を作る splice()

■この訂正は初版のものです。

p.110 のsplice()の説明が間違っていました。内容を訂正しお詫びします。間違っていたのは、第2引数で指定する値がendIndexではなく、deleteCountである点です。さらに第3引数以降で値を挿入できます。
splice()は次のようなメソッドです。p.108のslice()とスペルが似ているので注意です。また、インデックス番号は0から数えるので、「1番目」とは2個目の値を指しています。番目を「インデックス番号」と読み替えてください。

訂正文:
 抜き取る際に値を複製せずに元の配列から値を削除します。また、値を抜き取った位置に新しい値を代わりに挿入することもできます。これにより、splice()は値を抜き出すだけでなく、配列の値の削除や置換の目的でも利用できます。
 splice()の書式は次のとおりです。第1引数startIndexは抜き取り開始位置のインデックス番号、第2引数のdeleteCountでは抜き取る値の個数を指定します。入れ替える値は第3引数以降にカンマで区切って指定します。

書式:
splice(startIndex:int, deleteCount:uint, ... values):Array

 次の例では配列stockListのインデックス番号1から4個の値を抜き取って新しい配列pickUpListを作成します。元の配列stockListからは抜き取られた値が削除されています。

[:script:]配列のインデックス番号1から4個の値を抜き取る
var stockList:Array = ["a","b","c","d","e","f"];
var pickUpList:Array = stockList.splice(1,4);
//取り出した配列
trace(pickUpList);//出力:b,c,d,e
//元の配列からは値が抜き取られて削除されている
trace(stockList);//出力:a,f
 splice()は第2引数以降を省略できます。splice(3)のように引数を省略するとインデックス番号3から最後までの値を抜き出します。

[:script:]配列のインデックス番号3から最後までの値を抜き出す
var stockList:Array=["a","b","c","d","e","f"];
var pickUpList:Array=stockList.splice(3);
trace(pickUpList);//出力:d,e,f
trace(stockList);//出力:a,b,c
 引数をマイナスにすると末尾から個数を数えて取り出します。次の例は末尾から4個の値を取り出した配列を作ります。元の配列のstockListからは末尾の4個が削除されています。

[:script:]配列の末尾から4個を抜き出す
var stockList:Array=["a","b","c","d","e","f"];
var pickUpList:Array=stockList.splice(-4);
trace(pickUpList);//出力:c,d,e,f
trace(stockList);//出力:a,b

追加サンプル:
値を入れ替えるサンプルがないので、ここに新しいサンプルを追加しましょう!

[:script:]配列のインデックス番号2から3個の値を抜きとり、代わりに"X"、"Y"を挿入する。
var stockList:Array=["a","b","c","d","e","f"];
var pickUpList:Array=stockList.splice(2,3,"X","Y");
trace(pickUpList);//出力:c,d,e
trace(stockList);//出力:a,b,X,Y,f
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

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

このブログ記事について

このページは、oshigeが2009年8月 6日 16:39に書いたブログ記事です。

ひとつ前のブログ記事は「図形を複数の三角形に分割する」です。

次のブログ記事は「書評01」です。

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

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