## 配列（Array）

[up] [prev] [next]

#### ■ 一覧

Array(), concat(), join(), length, pop(), push(), reverse(), shift(), slice(), sort(), splice(), unshift(),

#### ■ 配列

◆ array = new Array() (e3/N3)
◆ array = new Array(n) (e3/N3)
◆ array = new Array(e1, e2, ...) (e4/N3)

n 個の要素を持つ配列、もしくはe1, e2, ...を要素とする配列を作成します。配列のインデックスは 0 から始まります。Netscape Navigator 3.0 では要素は最初 null に初期化されますが、Netscape Communicator 4.0 以降は undefined で初期化されます。n は省略可能です。下記のようにn - 1 を超えるインデックスも使用可能で、xx[6]を利用した時点で 0〜6 まで7個の要素が生成されます。

    xx = new Array(3);
    xx[0] = "Sun";
    xx[1] = "Mon";
    xx[6] = "Sat";
    yy = new Array("Sun", "Mon", "Thu");
    alert(yy[0] + yy[1] + yy[2]);

以下のようにして2次元配列も扱うことができます。

    xx = new Array(3);
    for (i = 0; i < xx.length; i++) {
        xx[i] = new Array(4);
        for (j = 0; j < xx[i].length; j++) {
            xx[i][j] = i * 10 + j;
        }
    }
    alert(xx[2][3]);

以下のようにして[ ] 内に文字列を使用することもできます。

    xx = new Array();
    xx["Sun"] = "Sunday";
    xx["Mon"] = "Monday";
    alert(xx["Sun"]);

#### ■ 配列の長さ

◆ array.length (e3/N3)

配列要素の個数を得るには length プロパティを参照します。

    for (i = 0; i < xx.length; i++) {
        alert(xx[i]);
    }

#### ■ 配列の連結

◆ array.concat(array2, ...) (e4/N4)

array と array2 を連結した配列を返します。array は変更されません。引数に複数指定することも可能です。

    xx = new Array("Sun", "Mon", "Tue", "Wed");
    yy = new Array("Thu", "Fri", "Sat");
    zz = xx.concat(yy);     // zz は "Sun", ...., "Sat" となる

◆ array.join(`[separator]`) (e4/N3)

array の各要素の値を separator で連結した文字列を返します。separator を省略した場合は通常カンマ（,）で連結されますが、JavaScript のバージョンによって動作が異なるので省略しない方が無難です。array は変更されません。

    xx = new Array("2000", "12", "31");
    yy = xx.join("/");     // yy は "2000/12/31" となる

#### ■ 配列要素の取り出しと追加

◆ array.unshift(e1, e2, ...) (N4)
◆ array.push(e1, e2, ...) (N4)

unshift() は array の先頭に e1, e2, ... の配列要素を加えます。push() は array の最後に配列要素を加えます。戻り値は JavaScript のバージョンによって異なります。

    xx = new Array("Sun", "Mon");
    xx.push("Tue");
    xx.push("Wed");

◆ array.shift() (N4)
◆ array.pop() (N4)

shift() は array の最初の要素を削除します。pop() は array の最後の要素を削除します。array 自身が変更されます。戻り値は削除した値となります。

◆ array.splice(start, n, e1, e2, ...) (N4)

0 から数えて、start 番目から n 個の要素を削除し、その代わりに e1, e2, ...を値とする要素を埋め込みます。戻り値は JavaScript のバージョンによって異なります。

    xx = new Array("A", "B", "C", "D", "E", "F", "G");
    xx.splice(2, 3, "c", "d", "e");   // "C", "D", "E" が小文字になります

◆ array.slice(start `[, end]`) (e4/N4)

0 から数えて、start 番目〜 end - 1 番目までの要素を抜き出した配列を返します。end を省略した場合は最後までの要素を返します。array は変化しません。

#### ■ 配列の並べ替え

◆ array.sort(`[func]`) (e4/N3)

array をソートしてその結果の配列を返します。array 自身がソートされます。func で比較関数を指定することも可能です。比較関数では負数、0、正数によって順序を返すようにします。

    xx = new Array(3, 7, 8, 1);
    xx.sort();
    alert(xx);

    function hikaku(a, b) { return(b - a); }
    yy = new Array(3, 7, 8, 1);
    yy.sort(hikaku);
    alert(yy);

◆ array.reverse() (e4/N3)

array を逆順に並べ替えてその結果の配列を返します。array 自身が並べ替えられます。

    xx = new Array(1, 2, 3, 4);
    xx.reverse();
    alert(xx);

#### ■ ブラウザの互換性の問題

Netscape Navigator 2.0 でも Array() を使用可能ですが、動作が不安定なので、次のような関数を自分で作成して用いなくてはなりません。Netscape Navigator 2.0 では xx[0] は xx.length（最初に定義された属性）を示すため、配列の序数は 1 から始めなくてはなりません。

    function MakeArray(n) {
        this.length = n;
        for (i = 1; i <= n; i++) {
            this[i] = "";
        }
        return(this);
    }
    xx = new MakeArray(3);
    xx[1] = "AAA";
    xx[2] = "BBB";
    xx[3] = "CCC";

Netscape Communicator で LANGUAGE 属性に JavaScript1.2 を指定した場合、new Array(3) は Array(e1, e2, ...) の形式と解釈され、xx[0] が 3 という値をもつ単一要素を生成します。JavaScript1.3 では JavaScript1.1 の仕様に戻されました。

[up] [prev] [next]
Copyright (C) 1996-2001 杜甫々
改訂版初版：2001年5月20日
http://www.tohoho-web.com/js/array.htm