JavaScript, Neo-Generation
Written 3/3/00
Modified 11/9/02
13. Array
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、pop メソッド JavaScript 1.2 JScript 5
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 メソッド JavaScript 1.2 JScript 5
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 メソッド JavaScript 1.2 JScript 5
unshift メソッドは引数を Array オブジェクトの先頭に要素として追加します。 複数の要素を同時に追加できます。 Array オブジェクトの長さはそれに応じて長くなります。
  var ary = new Array(1, 2, 3);
  ary.unshift(-1, 0);
  alert(ary);           //-1,0,1,2,3
 
slice メソッド JavaScript 1.2 JScript 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
 
splice メソッド JavaScript 1.2 JScript 5
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のときだけ、 要素そのものを返していたそうです。
Back