DATE : 2006/07/04 (Tue)
配列
配列を生成するには、次のようにします。
var a = new Array();
次のように生成することもできます。
var a = [];
配列にアクセスするには、以下の通りです。
要素番号は0から始まります。
a[0] = 0; // 0番目の要素にアクセス
a[1] = 1; // 1番目の要素にアクセス
push メソッドを使うと、配列の末尾に値を追加できます。
var a = new Array();
a.push(1);
a.push(2, 3, 4);
push メソッドは、値を追加後の配列の長さを返します。
なお、値のない要素を参照すると、undefined が返されます。
また、length プロパティを用いることで、配列の長さを取得できます。
a.length
以下のようにすると、配列の要素を要素数分だけ確保できます。
var a = new Array(10);
この例では、要素数が10の配列を宣言しています。
ただし、配列の大きさは自動的に変化します。つまり、最大を越えた要素番号に値を格納すると、それだけ配列は大きくなります。
var a = new Array(2);
a[5] = 3;
この場合、配列の大きさは6に変化します。
なお、次のようにすると、配列の宣言と同時に値を格納できます。
var a = new Array(1, 2, 3, 4, 5);
var b = new Array(1, 2, 3, 4, "five");
次のようにも書けます。
var a = [1, 2, 3, 4, 5];
var b = [1, 2, 3, 4, "five"];
配列の要素においても、格納できる型は自由です。
つまり、以下のようにすれば、関数を実行する配列も作れます。
func1 = new function() {
(省略)
}
func2 = new function() {
(省略)
}
var a = new Array(func1, func2);
for (var i = 0; i < a.length; i++) {
a[i]();
}
また、Array オブジェクトには様々なメソッドが定義されています。詳細は、仕様書の「15.4 Array オブジェクト」(邦訳)を参照してください。
連想配列
以下のようにすると、連想配列を生成できます。
var a = new Object();
a["a"] = 1;
a["b"] = 2;
連想配列は、新たに生成したオブジェクトのプロパティとして設定されています。例えば、上のコードは、以下のように書き換えられます。
var a = new Object();
a.a = 1;
a.b = 2;
また、以下のように初期化して生成することもできます。
var a = {a : 1, b : 2}
連想配列の全要素にアクセスするには、for-in 文を使うと便利です。
for-in 文は、そのオブジェクトに定義されているプロパティ名を返します。
for (var i in a) {
var v = a[i];
if (v.hasOwnProperty(i)) {
(要素 v に対する処理)
}
}
変数 i に、 オブジェクト a のプロパティ名が設定されます。
通常は、「v.hasOwnProperty()」を実行する if 文がなくても問題ありません。ただし、ライブラリなどによって Object にプロパティが追加されている場合、そのプロパティ名まで変数 i に設定されてしまいます。
Object 型の hasOwnProperty メソッドを使用することで、そのオブジェクトそのものに設定されているプロパティかどうかを確かめることができます。