配列とは値を順序づけしたもので、個々の値を要素、各要素に割り当てる番号をインデックスと呼ぶ。但し、内部的にJavaScriptにおける配列とはオブジェクトを拡張したものである。
var tmpAry = new Array(); alert(typeof tmpAry);//object
■配列の生成
配列リテラルを使用
var ary = ['John', 'Jack', 'Nick'];
Arrayコンストラクタを使用
var ary = new Array('John', 'Jack', 'Nick');
但し、以下のように1個の数字を引数に指定した場合は、引数で指定した個数の未定義値の値の要素を持つ配列が生成される。
var ary = new Array(5);
■要素へのアクセス
var ary = ['John', 'Jack', 'Nick']; ary[3] = 'Mike'; ary['3'] = 'Emily'; alert(ary);//John,Jack,Nick,Emily
■要素の追加
以下のようにして要素を追加することができる。インデックスは連続した値である必要はなく、メモリ上に使用していないインデックスが確保される事もない。
var ary = ['John', 'Jack', 'Nick']; ary[101] = 'Pochi'; for(var i = 0; i< ary.length; i++){ alert(ary[i]); } //102 times alerts
但し、lengthは最後のインデックス+1が格納され、上述のようなコードではループが最後のインデックスまで1ずつ実行される。
■要素の削除
以下のようにdelete演算子を使うこともできるが、undefinedが入り要素自体は削除されない。
var undefined;//for browsers not implementing the type 'undefined' var ary = ['John', 'Jack', 'Nick']; delete ary[1]; alert(ary);//John,,Nick alert(ary.length);//3 for(var i = 0; i < ary.length; i++){ if(typeof ary[i] === undefined){ alert('undefined'); } else{ alert(ary[i]); } } /* John,undefined,Nick */
■lengthプロパティ
以下のように配列の長さより小さな値を代入し配列を切り詰めることができる。
var ary = ['John', 'Jack', 'Nick']; ary.length = 2; alert(ary);//John,Jack
以下のように配列の長さより大きな値を代入し配列を拡張することができる。
var ary = ['John', 'Jack', 'Nick']; ary.length = 4; alert(ary);//John,Jack,Nick,
代入することが出来るのは基本的には数値のみである。
var ary = ['John', 'Jack', 'Nick']; ary.length = {}; //syntax error