配列の使い方

文字列、数値、ブール値、null、undefinedなどのデータをプリミティブデータといいます。Action Scriptでは、複数のデータをひとまとめにしたコンポジットデータをいくつかサポートしています。

配列とは、順番のあるリストの形をしたコンポジットデータです。また、配列は配列オブジェクトです。

配列の構造

  • 配列の個々のデータを配列エレメントといいます。
  • 配列エレメントの位置を表す数値をインデックスといいます。0から始まるので注意してください。
  • 配列の大きさを、配列の長さといい、保管できる配列エレメントの個数で表します。

配列の生成

配列は以下の時に生成されます。

  • 配列リテラル
  • Array()コンストラクタ

配列リテラル

配列リテラルはコンマ「.」で区切った複数のデータをブランケット「[ ]」で囲んだ形をしています。

[1, 2, 3] // 1,2,3の数値からなる配列

["りんご", "みかん", 3, 5+1] // 文字列と数値と式からなる配列

[1, , , 2] // 隙間のある配列

[1, 2, [3, 4]] // ネスト(入れ子)した配列。二次元配列ともいう

[] // 空の配列

Array()コンストラクタ

配列オブジェクとのArray()コンストラクタを使っても同じものが作れます。

new Array(1, 2, 3) // 1,2,3の数値からなる配列

new Array("りんご", "みかん", 3, 5+1) // 文字列と数値と式からなる配列

new Array(1, , , 2) // 隙間のある配列

new Array(1, 2, new Array(3, 4)) // ネスト(入れ子)した配列。二次元配列ともいう

new Array() // 空の配列

引数に数値を一つ指定した場合には、指定した数値の長さの配列が作成されます。

new Array(10) // 長さが10の空の配列(インデックスは0から9まで)

インデックスは0から始まるため、配列の長さは最後のインデックスよりも1大きな数になります。

配列エレメントの参照

作成した配列から配列エレメントを参照するには、配列アクセス演算子「 [ ] 」を使用します。

配列名[式]

例 配列エレメントの取り出し

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names[1]); // エミリーと表示

trace(names[Math.floor(Math.random()*3)]); // ランダムで配列エレメントを表示

例 配列エレメントの代入

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

names[1]="ブラウン"; // インデックス1の配列エレメントに代入

trace(names[1]); // ブラウンと表示

配列オブジェクトのプロパティ

length 配列の長さ

配列の長さは、配列オブジェクトのlengthプロパティで取得・変更できます。

例 配列の長さの取得

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names.length); // 3と表示

var list=new Array(10);

trace(list.length); // 10と表示

// 配列全てを操作
for (var i=0; i<names.length; i++) { // 配列の長さだけ繰り返し
    trace(i+": "+names[i]); // i番目の配列エレメントを表示
}

例 配列の長さの変更

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

names.length=10; // 配列の長さが10になるように空の配列エレメントを追加

names.length=2; // 配列の長さが2になるように配列を切り詰める
trace(names); // マイキー,エミリー と表示

配列オブジェクトのメソッド

push() 末尾に配列エレメントを追加
unshift() 先頭に配列エレメントを追加
pop() 末尾の配列エレメントを削除
shift() 先頭の配列エレメントを削除
splice() 任意の場所の配列エレメントの除去・追加
concat() 配列を結合して新たな配列を作成
slice() 配列の一部を新たな配列として作成
reverse() 配列を逆順にする
sort() 配列を並べ替える「
sortOn() 配列を並べ替える
join() 指定した区切り文字で配列から文字列を作成
toString() 区切り文字「,」で配列から文字列を作成
delete() 配列エレメントにundefinedを入れる

末尾に配列エレメントを追加

push()メソッドは配列の末尾に配列エレメントを追加して、配列の長さを返します。

配列名.push(引数1, 引数2, ... 引数n)

例 末尾に配列エレメントを追加

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names.push("トニー", "チャールズ")); // 5と表示

trace(names); // マイキー,エミリー,ローラ,トニー,チャールズ と表示

先頭に配列エレメントを追加

unshift()メソッドは配列の先頭に配列エレメントを追加して、配列の長さを返します。

配列名.unshift(引数1, 引数2, ... 引数n)

例 先頭に配列エレメントを追加

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names.unshift("トニー", "チャールズ")); // 5と表示

trace(names); // トニー,チャールズ,マイキー,エミリー,ローラ と表示

末尾の配列エレメントを削除

pop()メソッドは配列の末尾にある配列エレメントを削除して、削除した配列エレメントを返します。

配列名.pop()

例 末尾の配列エレメントの削除

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names.pop()); // ローラと表示

trace(names); // マイキー,エミリー と表示

先頭の配列エレメントを削除

shift()メソッドは配列の末尾にある配列エレメントを削除して、削除した配列エレメントを返します。

配列名.shift()

例 先頭の配列エレメントの削除

var names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

trace(names.shift()); // マイキーと表示

trace(names); // エミリー,ローラ と表示

配列の逆順

reverse()メソッドは、配列のエレメントの順番を逆にします。

配列名.reverse()

例 配列の逆順

names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

names.reverse(); // 逆順に

trace(names); // ローラ,エミリー,マイキーと表示

配列の並べ替え

sort()メソッド関数は配列を辞書順(ただし大文字は小文字より前)に並び替えます。比較方法を指定して任意の方法で並び替える方法もありますが、ここでは省略します。

配列名.sort()

例 配列の並べ替え

names=["マイキー", "エミリー", "ローラ"]; // 配列リテラルで変数に保管

names.sort(); // 並び替え

trace(names); // エミリー,マイキー,ローラと表示