13. Array
Array オブジェクトは Perl と同じように次のように生成することができます。
var ary = [ element0, element1, ...];
例えば次のようです。
var ary = ["ほえ", "ほえ", "ハッピー"];
alert(ary.join("")); //ほえほえハッピー
二次元配列を次のようにきれいに書けます。
var ary = [[1, 2], [3, 4], [5, 6]];
alert(ary[2][1]); //6
JScript はいつの間にか動作が変わったようです(11/9/02)。
かつては C と同じように整形のための最後のカンマが認められていました。
var ary = [
"ペペロンチーノ",
"お好み焼きどんぶり",
"8段アイス",
];
こうすると配列の長さは3でしたが、
今では(JScript5.6)長さ4となりました。
alert(ary.length);
Windows98のときはそんなことはなかったのですが、
2年くらい前にWindowsMEに変えたときにバグが出て、
ずっと原因が分からなかったのですが、こういうことだったんですね。
push メソッドは引数を Array
オブジェクトの末尾に要素として追加します。
Array オブジェクトの長さは1長くなります。
pop メソッドは Array
オブジェクトから最後の要素を抜き出して、それを返します。
Array オブジェクトの長さは1短くなります。
これらのメソッドを使うと Array
オブジェクトをスタックとして扱うことができます。
var ary = new Array();
ary.push(1);
ary.push(2);
alert(ary.pop()); //2
ary.push(3);
alert(ary.pop()); //3
alert(ary.pop()); //1
alert(ary.pop()); //undefined もう取り出す要素がない
shift メソッドは Array
オブジェクトの先頭から要素を抜き出して、それを返します。
このメソッドを
push メソッドとあわせて使うと、
Array オブジェクトをキューとして扱うことができます。
var ary = new Array();
ary.push(1);
ary.push(2);
alert(ary.shift()); //1
ary.push(3);
alert(ary.shift()); //2
alert(ary.shift()); //3
unshift メソッドは引数を Array
オブジェクトの先頭に要素として追加します。
複数の要素を同時に追加できます。
Array オブジェクトの長さはそれに応じて長くなります。
var ary = new Array(1, 2, 3);
ary.unshift(-1, 0);
alert(ary); //-1,0,1,2,3
Array オブジェクトから指定した分だけ要素をコピーして新しい
Array オブジェクトを返します。
引数が1つだけなら、その位置から最後までコピーします。
引数が2つなら第2引数の一つ手前の位置までコピーします。
第2引数が負なら、後ろから数えます。
var ary = new Array(0, 1, 2, 3, 4);
var ary2 = ary.slice(2);
alert(ary2); //2,3,4
var ary3 = ary.slice(2, 4);
alert(ary3); //2,3
var ary4 = ary.slice(2, -1);
alert(ary4); //2,3
Array オブジェクトのある位置から指定した数だけ要素を取り除き、
その位置に別の要素を追加します。
取り除かれた要素からなる Array オブジェクトを返します。
ary2 = ary.splice(pos, length, element1, element2, ...)
pos の位置から
length 分だけ要素を取り除き、
element1,
element2, ... を追加します。
var ary = new Array(0, 1, 2, 3, 4);
var ary2 = ary.splice(0, 2);
alert(ary); //2,3,4
alert(ary2); //0,1
var ary3 = ary.splice(1, 1, 5, 6);
alert(ary); //2,5,6,4
alert(ary3); //3
var ary4 = ary.splice(2, 0, 7, 8);
alert(ary); //2,5,7,8,6,4
alert(ary); //
JavaScript1.2 では取り除く要素が1のときだけ、
要素そのものを返していたそうです。