JavaScript/Array
配列(はいれつ、array)とは、数値や文字列などのデータまたは変数を順番に並べた集合です。
目次 |
[編集] 配列リテラル
配列リテラル(はいれつリテラル、array literal)は[]で囲んで表します。
var array = [ 'A', 'B', 'C', 'D', 'E' ]; alert( array[0] ); // A alert( array[1] ); // B alert( array[2] ); // C alert( array[3] ); // D alert( array[4] ); // E alert( array.length ); // 5
配列の要素(ようそ、element)にはインデックス(index、添え字、添字、そえじ)と呼ばれる0から始まる数値を使用してアクセスします。インデックスは1ではなく0から始まることに注意してください。配列の最後の要素のインデックスは、lengthプロパティで取得できる配列の長さ(要素数)よりも1小さくなります。JavaScriptでは1つの配列に異なるデータ型のオブジェクトを入れることができます。
[編集] Array
Arrayオブジェクトのコンストラクタの引数は要素のリスト、もしくは配列の長さです。
// [ 'A', 'B', 'C', 'D', 'E' ] var array = new Array( 'A', 'B', 'C', 'D', 'E' );
または
// [ 'A', 'B', 'C', 'D', 'E' ] var array = new Array(5); array[0] = 'A'; array[1] = 'B'; array[2] = 'C'; array[3] = 'D'; array[4] = 'E';
後者はやや古い書き方です。
[編集] プロパティ
[編集] 配列の反復処理
配列の要素を1つずつ取り出して処理するには、for文を使用します。
// A, B, C, D, E を順番にアラート var array = [ 'A', 'B', 'C', 'D', 'E' ]; for ( var i = 0, l = array.length; i < l; i++ ) { var element = array[i]; alert(element); }
JavaScript 1.6以降では、ECMA-262第5版で導入されたArray.prototype.forEachメソッドを使用することができます。ただし、一部の処理系ではサポートされていません。
// A, B, C, D, E を順番にアラート var array = [ 'A', 'B', 'C', 'D', 'E' ]; array.forEach(function(element){ alert(element); });
for-in文などの構文はオブジェクトのプロパティを順番に取り出す構文であり、配列オブジェクトにプロパティやメソッドが追加された場合それらも取り出されてしまうため、配列の反復処理に用いることは推奨されません。
[編集] 配列の配列
配列の配列(はいれつのはいれつ、array of arrays)とは、配列を要素に含む配列です。将棋盤など2次元のデータ構造を表すのに用いられます。
var array = [ [ 'A', 'B', 'C', 'D', 'E' ], [ 'A', 'B', 'C', 'D', 'E' ], [ 'A', 'B', 'C', 'D', 'E' ], [ 'A', 'B', 'C', 'D', 'E' ], [ 'A', 'B', 'C', 'D', 'E' ] ]; alert( array[0][0] ); // A alert( array[1][0] ); // A alert( array[2][2] ); // C alert( array[3][2] ); // C alert( array[4][4] ); // E
n次元の配列を一般にn-次元配列(n-dimensional array)、多次元配列(たじげんはいれつ、multidimensional array)などとも呼びます。プログラミング言語によっては、上記の例のように同じ次元の要素数がそろっている正方形の形をしたものを多次元配列、そうでない不規則なものをジャグ配列(ジャグはいれつ、jagged array)と呼んで区別することもありますが、JavaScriptでは特に区別しません。