配列

オブジェクトには、[]を使った参照方法があると説明しましたが、これはオブジェクト内のプロパティを配列として扱って参照していました。配列とは複数の値を同じ変数で管理するための仕組みで、[]内に配列内の要素番号を指定し、その要素内に格納されている値を参照します。

配列の仕組み

配列として要素内の値を参照するときは、数値を使用します。オブジェクトで文字列を使ってプロパティ参照していましたが、これは連想配列と呼ばれます。配列を使用する場合には、Arrayオブジェクトで変数を初期化します。初期化するには、newを使用します。newはオブジェクトを初期化するために使用するキーワードです。

var list = new Array();

要素の追加

初期化された配列オブジェクトに要素を追加するには、Arrayオブジェクトのメンバ関数のpush関数またはunshift関数を使用します。

var list = new Array();
list.push( 3 );
list.push( "あいうえお" );
list.push( "Abcdef..." );
trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

list = new Array();

list.unshift( 3 );
list.unshift( "あいうえお" );
list.unshift( "Abcdef..." );

trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

--実行結果
3
あいうえお
Abcdef...
Abcdef...
あいうえお
3

どちらも引数に設定された値を配列の要素に追加するのですが、配列への格納場所が異なります。pushは配列の最後の要素の後に要素を追加し、unshift関数は配列の先頭の要素の前に要素を追加します。

要素の値を参照するときは、[]内に取得したい要素の位置を指定します。配列は0番目から始まるようになっています。同じようにして値を修正することができます。また、pushやunshift関数を使わなくても未定義の要素番号を指定して代入すれば、自動的にその位置に要素の追加が行なわれます。

var list = new Array();
list[ 0 ] = 3;
list[ 1 ] = "あいうえお";
list[ 2 ] = "Abcdef...";
trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

list = new Array();

list[ 2 ] = 3;
list[ 1 ] = "あいうえお";
list[ 0 ] = "Abcdef...";

trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

--実行結果
3
あいうえお
Abcdef...
Abcdef...
あいうえお
3

最初にArrayオブジェクトで変数の初期化を行っていますが、値が設定された状態で変数を初期化することができます。new Array()の代わりに[]で初期化します。このとき、[]内になにもなければ配列内は空の状態で初期化され、値を設定するときは、[]内に値を列挙します。左から順番に要素に追加されます。

var list = [ 3, 4, 5, "番号" ];

trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );
trace( list[ 3 ] );

--実行結果
3
4
5
番号

要素の取り出し

配列内の要素を取り出す場合に、pop,shift関数を使用します。[]を使って取得するのもいいのですが、順番にデータを取り出したいときに関数を使う方がわかりやすく、一緒にデータも削除するので便利です。pop関数は配列の最後の要素を削除し、削除した要素を返します。shift関数は、配列の先頭の要素を削除し、削除した要素を返します。またshift関数では、削除した要素を詰めるように再配置されます。

var list = [ 0, 1, 2, 3 ];

trace( "pop" );
trace( list.pop() );
trace( list.pop() );

trace( list[ 0 ] );
trace( list[ 1 ] );

list = [ 0, 1, 2, 3 ];

trace( "shift" );
trace( list.shift() );
trace( list.shift() );

trace( list[ 0 ] );
trace( list[ 1 ] );

--実行結果
pop
3
2
0
1
shift
0
1
2
3

連想配列

連想配列を使えば文字列で要素を取り出すことができるので、わかりやすい名前を付ければ要素の管理がしやすくなります。使用するには、Objectで初期化します。ObjectはArrayやムービークリップなどのすべてのオブジェクトの親にあたる基本オブジェクトです。実際は、連想配列の要素はオブジェクトのプロパティで、それを[]で参照していることになるのですが、連想配列と思っても間違いではありません。Objectで初期化していますが、Arrayで初期化しても動作します。これは、Objectの機能をArrayが持っているためです。

var person = new Object();

person[ "name" ] = "tomohiro";
person[ "country" ] = "Japan";
person.age = 25;

trace( person[ "name" ] );
trace( person.country );
trace( person[ "age" ] );

--実行結果
tomohiro
Japan
25

要素を追加する場合には、[]で要素名を指定するか、ドットシンタックスを使って代入します。要素の値を参照する場合も同じ方法です。要素名で使用できる文字の種類は、アルファベット(A-Z)と数字(0-9)と"_"になります。変数と違い先頭に数字を使用することもできますが、ドットシンタックスで参照する場合にエラーとなるで使用しない方がいいでしょう。

連想配列もあらかじめ初期値を設定した状態で初期化できます。初期化するには[]を使わず、{}を使用します。{}内では要素名:値の組み合わせで列挙し、要素間の区切り","を挿入します。

var person = { name:"tomohiro", country:"Japan", age: 25 };

trace( person.name );
trace( person[ "country" ] );
trace( person.age );

--実行結果
tomohiro
Japan
25

そのほかの配列の処理

Arrayオブジェクトには、push、pop以外にもメンバ関数やプロパティが用意されています。

length(プロパティ)
説明 : 配列の長さを取得することができます。
例 :

var list = [ 0, 1, 2, 3, 5, 7, 11, 13 ];
trace( list.length );

list = [ 3, 5, 6 ];
trace( list.length );

--実行結果
8
3

reverse()
説明 : 配列内の要素の順番を反転します。
引数 : なし
戻り値 : なし
例 :

var list = [ 3, 5, 7 ];
trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

list.reverse();
trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );

--実行結果
3
5
7
7
5
3

concat( var1, var2, ... varN )
説明 : 引数に指定された内容を配列に追加し、追加後の配列を返します。元の配列の内容は変わりません。
var1, var2, ... varN : 値を列挙するか、Arrayオブジェクトを指定します。
戻り値 : 追加後のArrayオブジェクト
例 :

var list = [ 0, 1, 2 ];
list = list.concat( 5, "AA", 4 );
list = list.concat( [ "BB", 3 ] );

trace( list[ 0 ] );
trace( list[ 1 ] );
trace( list[ 2 ] );
trace( list[ 3 ] );
trace( list[ 4 ] );
trace( list[ 5 ] );
trace( list[ 6 ] );
trace( list[ 7 ] );

--実行結果
0
1
2
5
AA
4
BB
3

slice( start, end )
説明 : 指定した範囲内の要素を抜き出します。元の配列の内容は変わりません。要素の最後から指定する場合には、startの位置をendよりも小さくなるように指定します。
start : 抜き出す要素の開始位置を指定します。マイナスにした場合は、要素の最後からの指定になります。
end : 抜き出す要素の終了位置を指定します。マイナスにした場合は、要素の最後からの指定になります。
戻り値 : 範囲内の要素の配列。

例 :

var list = [ 0, 1, 2, 3, 5, 7, 11, 13 ];
var list2 = list.slice( 0, 3 );
var list3 = list.slice( -4, -1 );

trace( list2[ 0 ] );
trace( list2[ 1 ] );
trace( list2[ 2 ] );
trace( list3[ 0 ] );
trace( list3[ 1 ] );
trace( list3[ 2 ] );

--実行結果
0
1
2
5
7
11

splice(index, length, var1, var2, ... varN )
説明 :
指定した範囲内の要素を取り出し、元の要素から削除します。また、新しく要素を追加できます。
index : 削除を開始する要素の位置を指定します。
length : 削除するようその数を指定します。指定しない場合はindex以降のすべての要素が削除されます。
var1, var2, ... varN : 要素に追加する値を列挙するか、Arrayオブジェクトで指定します。指定しない場合は、削除だけが行われます。
戻り値 : 削除される要素の配列。

例 :

var list = [ 0, 1, 2, 3, 5, 7, 11, 13 ];
var list2 = list.splice( 3, 4, "A", "B", "C" );
var list3 = list.splice( 5 );

trace( list );
trace( list2 );
trace( list3 );

--実行結果
0,1,2,A,B
3,5,7,11
C,13

join( separator )
説明 : 配列内の要素をすべて連結してひとつの文字列にします。要素間には、separatorで指定した文字が挿入されます。
separator : 要素間に挿入する文字を指定します。省略した場合には、","が使用されます。
例 :

var list = [ 0, 1, 2, 3, 5, 7, 11, 13 ];
trace( list.join( "\n" ) );
trace( list.join( "" ) );
trace( list.join() );

--実行結果
0
1
2
3
5
7
11
13
0123571113
0,1,2,3,5,7,11,13


TOP > Flash > ActionScript > 配列