ArrayNN 3 IE 4 ECMA 1

配列とは、データが特定の順序に従って保存されているコレクションです。JavaScript の配列には全データタイプの要素を保存できます。同じ配列に異なるタイプのデータを混在させることも可能です。配列の各要素にはインデックスが割り当てられます。デフォルトの動作ではインデックスは 0 から始まり、整数が使用されます。したがって最初の要素のインデックスは 0 になります。インデックス値には文字列を使用することもできますが、文字列インデックスは配列オブジェクトのプロパティ名のように機能し、数値インデックスに影響しません。このため、文字列インデックスの要素は配列の length プロパティを使用して繰り返すことはできませんが、for-in ループを使用して繰り返すことはできます。同じ配列オブジェクト内に整数インデックスの項目と文字列インデックスの項目を混在させることもできます。

 

配列に含まれる特定のエントリにアクセスするには、次のように配列の名前および、インデックスを角かっこで囲んで指定する必要があります。

 
cars[0]
cars["Ford"]
 

多次元の配列を表すために配列の配列を作成することもできます。2 次元配列内の項目への参照には、次の構文を使用します。

 
myArray[x][y]
 

JavaScript 配列に含まれるエントリ数 (つまり配列の長さ) は可変です。したがって、空の配列を特定のサイズに初期化する必要はありませんし、その利点もありません。長さがわからない配列に新しいエントリを追加するには、次に大きい配列インデックスに値を割り当てます。次に例を示します。

 
cars[cars.length] = "Bentley";
 

IE 4 と Navigator 4 以降では、角かっこを使用して値をリテラル表記に含める、簡略化された配列作成方法があります。

 
配列の作成方法
 
var myArray = new Array();
var myArray = new Array(sizeInteger);
var myArray = new Array(element0, element1, ..., elementN);
var myArray = [element0, element1, ..., elementN];
 
プロパティ
 
constructorlengthprototype
 
メソッド
 
concat()join()pop()
push()reverse()shift()
slice()sort()splice()
toLocaleString()toString()unshift()
 
constructorNN 4 IE 4 ECMA 1

読み書き

Array オブジェクトのインスタンスを作成した関数、つまりブラウザでのネイティブな Array() コンストラクタ関数への参照です。

 
 
if (myVar.constructor == Array) {
    // process native string
}
 

関数オブジェクトの参照

 
lengthNN 3 IE 4 ECMA 1

読み書き

配列に含まれる数値インデックス化されたエントリの数です。コンストラクタ関数で長さを仮に設定して配列を作成すると、指定数の要素がすべて埋まっていない場合でも length プロパティの値は設定された長さになります。

 
 
for (var i = 0; i < myArray.length; i++) {
    ...
}
 

整数値

 
prototypeNN 3 IE 4 ECMA 1

読み書き

静的な Array オブジェクトのプロパティです。prototype プロパティを使って、現在のドキュメントでこの後作成される配列のインスタンスに新しいプロパティやメソッドを設定します。たとえば次の関数は、配列に保存されている要素のリストを、順序を逆にして改行区切り形式で作成します。

 
function formatAsList() {
    var output = "";
    for (var i = this.length - 1; i >= 0; i--) {
        output += this[i] + "\n";
    }
    alert(output);
}
 

特定の配列についてこのようなリストを作成するには、プロパティ名がこの関数を呼び出すメソッドである prototype プロパティに、この関数参照を設定します。次に例を示します。

 
Array.prototype.showReverseList = formatAsList;
 

ここでスクリプトが次の配列を作成すると仮定します。

 
var stooges = new Array("Moe", "Larry", "Curly", "Shemp");
 

すると、作成された配列では showReverseList() というメソッドを使用できます。このメソッドを呼び出すには、次のステートメントを使用します。

 
stooges.showReverseList();
 

これと同じ方法を使ってプロパティも追加できます。このようにすると、作成時間などの配列に関する情報を、配列データの順序を変えずに配列に追加することができます。新規ドキュメントがウィンドウやフレームに読み込まれると、静的な Array オブジェクトはクリアされます。

 
 
Array.prototype.created = "";
 

関数参照を含むすべてのデータ

 
concat()NN 4 IE 4 ECMA 3

concat(item1[, item2[, ...itemN]])

現在の配列オブジェクトと、メソッドのパラメータで指定された配列オブジェクトまたは他の値を組み合わせた配列を返します。次に例を示します。

 
var combinedArray = myArray1.concat(myArray2, someValue);
 

元の配列はいずれも変更されません。

 
戻り値

Array オブジェクト

 
パラメータ
 
  • item1...itemN
      別の配列を含む任意の JavaScript 値
 
join()NN 3 IE 4 ECMA 1

join(["delimiterString"])

配列に含まれる項目 (文字列) のリストを示す文字列を返します。各項目の間の区切り文字は、メソッドのパラメータで設定します。配列の項目は、整数インデックスを使用してアクセスできる項目だけです。文字列インデックス値を使用して参照する項目は、配列オブジェクトのプロパティとして処理され、整数インデックス値に依存しません。これらの 2 種類のインデックスは 1 つの配列に混在させることができます。join() メソッドは、整数インデックスの項目だけに使用できます。

 
戻り値

文字列

 
パラメータ
 
  • delimiterString
      文字列。英数字以外の文字は URL エンコードする必要があります。たとえば、キャリッジリターンには %0D を使用します。デフォルトの区切り文字列はコンマです。
 
pop()NN 4 IE 5.5 (Win) ECMA 2

配列の末尾の項目の値を返し、これを配列から削除します。配列の長さは 1 つ小さくなります。

 
戻り値

JavaScript で有効な値

 
パラメータ

なし

 
push()NN 4 IE 5.5 (Win) ECMA 2

push(item1[, item2[, ...itemN]])

配列の末尾に項目を追加します。配列の長さは 1 つ大きくなります。

 
戻り値

配列に追加する値

 
パラメータ
 
  • item1...itemN
      オブジェクト参照を含む、JavaScript 値のコンマ区切りリスト
 
reverse()NN 3 IE 4 ECMA 1

配列中の項目の順序を反転し、順序が逆になった配列のコピーを返します。reverse() メソッドは元の配列の値の順序を反転するだけでなく、順序を反転した配列のコピーを返します。

 
戻り値

Array オブジェクト

 
パラメータ

なし

 
shift()NN 4 IE 5.5 (Win) ECMA 2

配列の先頭項目の値を返し、これを配列から削除します。配列の長さは 1 つ小さくなります。

 
戻り値

JavaScript で有効な値

 
パラメータ

なし

 
slice()NN 4 IE 4 ECMA 2

slice(startIndex[, endIndex])

配列から連続する項目のサブセットを抜き出し、別の配列として返します。抜き出す項目の範囲はパラメータによって決まります。

 
戻り値

Array オブジェクト

 
パラメータ
 
  • startIndex
      現在の配列から抜き出すサブセットの最初の項目を示す、0 から始まるインデックス (整数) を指定します。
  • endIndex
      現在の配列から抜き出すサブセットの最後の項目を示す、0 から始まるインデックス (整数) を指定します。このパラメータの指定は任意です。指定しなかった場合、startIndex の位置から配列の末尾までの項目を抜き出します。
 
sort()NN 3 IE 4 ECMA 1

sort([compareFunction])

各配列エントリの文字列の ASCII 値または、独自に作成した比較関数の結果に基づいて、配列の値を並べ替えます。sort() メソッドは、比較関数に配列の 2 つの値を渡しながら、比較関数を繰り返し実行します。比較関数は整数値を返し、この値が sort() 関数によって次のように解釈されます。

 
意味
 <0
最初の値が 2 番目の値に先行する
 0
2 つの値の順序を変更しない
 >0
2 番目の値が最初の値に先行する
 

次の比較関数は、ASCII 値ではなく数値に基づいて配列を並べ替えます。

 
function doCompare(a, b) {
    return a - b;
}
 

この関数を使って配列を並べ替えるには、次のステートメントを使用します。

 
myArray.sort(doCompare);
 

sort() メソッドは、doCompare() 関数にすべての値を 2 つずつ受け渡し、バブルソートですべての値の順序を並べ替えた時点で実行が完了します。

 

sort() メソッドは元の配列の値を並べ替えるだけでなく、並べ替えた配列のコピーも返します。

 
戻り値

並べ替え条件に従って並べ替えられた Array オブジェクト

 
パラメータ
 
  • compareFunction
      2 つのパラメータを受け入れ整数値の結果を返す比較関数
 
splice()NN 4 IE 5.5 (Win) ECMA 2

splice(startIndex, deleteCount[, item1[, item2[, ...itemN]]])

配列から連続する項目を削除し、任意でその位置に新しい項目を挿入します。配列の長さは自動的に調整されます。

 
戻り値

削除された項目を含む Array オブジェクト

 
パラメータ
 
  • startIndex
      現在の配列から抜き出すサブセットの最初の項目を示す、0 から始まるインデックス (整数) を指定します。
  • deleteCount
      配列の startIndex の位置から削除する項目数を示す整数
  • item1...itemN
      削除された項目の位置に挿入する JavaScript 値のコンマ区切りリスト。項目数は deleteCount と同じでなくてもかまいません。
 
toLocaleString()NN 6 IE 5.5 (Win) ECMA 2

理論上ブラウザのデフォルトの言語と慣例に従ったフォーマットのコンマで区切った値の文字列を返します。実装の詳細は、ブラウザとデータタイプによって異なります。IE 5.5 以降では、さまざまな数値が小数点以下 2 桁の文字列に変換されますが、オブジェクト参照の場合はエラーが発生します。Netscape 6 では、整数は元のフォーマットのまま残され、オブジェクト参照は [object objectType] として表示されます。ECMA 標準では、このような解釈はブラウザのメーカーに委ねられています。

 
戻り値

コンマで区切った文字列

 
パラメータ

なし

 
toString()NN 3 IE 4 ECMA 1

コンマパラメータを指定して Array.join() メソッドを使用したときのように、コンマで区切った値の文字列を返します。オブジェクトも含めて、値はすべて同等の文字列に変換されます。オブジェクトは、Windows 版 IE では [object]、Macintosh 版 IE 5 と Netscape 6 では [object objectType] となります。

 
戻り値

コンマで区切った文字列

 
パラメータ

なし

 
unshift()NN 4 IE 5.5 (Win) ECMA 2

unshift(item1[, item2[, ...itemN]])

配列の先頭に項目を挿入します。配列の長さは追加された項目数の分だけ大きくなり、このメソッドは新しい長さを返します。

 
戻り値

整数値

 
パラメータ
 
  • item1...itemN
      JavaScript 値のコンマ区切りリスト