配列の概要
更新 : 2007 年 11 月
配列は、複数のデータを 1 つの変数にまとめたものです。1 つのインデックス番号 (1 次元配列の場合) または複数のインデックス番号 (配列の配列、または多次元配列の場合) を使って、配列内のデータを参照します。配列識別子の後に角かっこ ([]) で囲んだインデックス番号を指定すると、配列の各要素を参照できます。配列全体を参照するには、配列の識別子だけを使用します。データを配列にまとめることで、データ管理が簡単になります。たとえば、配列を使用することで、メソッドは 1 つのパラメータだけを使用して関数に名前のリストを渡すことができます。
JScript の配列には、JScript 配列と型指定された配列の 2 種類があります。これらの配列は似ていますが、いくつかの違いがあります。JScript 配列と型指定された配列は相互運用できます。したがって、JScript の Array オブジェクトは、型指定された配列のメソッドとプロパティを呼び出すことができます。また、型指定された配列は、Array オブジェクトの多くのメソッドとプロパティを呼び出すことができます。さらに、型指定された配列を受け取る関数は Array オブジェクトを受け取ることができ、逆の場合も同様です。詳細については、「Array オブジェクト」を参照してください。
型指定された配列
型指定された配列 (ネイティブ配列) は、C や C++ などの言語で使用される配列に似ています。型指定された配列は、配列の型宣言で指定された型のデータだけを格納することによって、タイプ セーフを実現します。
メモ : |
---|
Object 型の型指定された配列を定義すると、任意の型のデータを格納できます。 |
型指定された配列の要素数は、スクリプトが配列を作成または初期化するときに設定されます。要素の数を変更するには、配列を作成し直す必要があります。型指定された配列に n 個の要素がある場合、要素には 0 ~ n-1 の番号が付けられます。この範囲外の要素にアクセスしようとすると、エラーが発生します。また、型指定された配列は "密" な配列です。つまり、範囲内のインデックスは、すべて要素を参照しています。
スクリプトは、宣言済みの型指定された配列を変数または定数に代入できます。また、関数、演算子、またはステートメントに配列を渡すこともできます。変数 (または定数) に代入する場合、変数のデータ型が配列のデータ型に一致し、複数の配列の次元が一致するようにします。
型指定された配列は、.NET Framework の System.Array オブジェクトのインスタンスです。System.Array オブジェクトの静的メンバにアクセスする場合、または System.Array オブジェクトを明示的に作成する場合は、完全修飾名 System.Array が必要です。この構文により、組み込みの JScript オブジェクトの Array と区別されます。
JScript の配列
JScript の Array オブジェクトは型指定された配列よりも柔軟で、ジェネリック スタックや項目のリストが必要な場合、またはパフォーマンスが重要でない場合に便利です。ただし、型指定された配列はタイプ セーフでパフォーマンスに優れ、他の言語との相互運用性も高いため、開発者は、通常、JScript 配列ではなく型指定された配列を使用します。
JScript 配列には任意の型のデータを格納できます。これにより、型の衝突を気にせずに、配列を使用するスクリプトをすばやく簡単に作成できます。JScript 配列では JScript で提供される厳密な型チェックが省略されるため、JScript 配列を使用する場合は注意が必要です。
JScript 配列の要素は、動的に追加および削除できます。配列要素を追加するには、要素に値を代入します。delete 演算子を使用すると要素を削除できます。
JScript 配列は "疎" 配列です。配列に 0、1、および 2 の 3 つの要素がある場合、要素 3 ~ 49 がなくても要素 50 は存在できます。各 JScript 配列には length プロパティがあり、要素が追加されると自動的に更新されます。上の例で要素 50 を追加すると、length 変数の値は 4 ではなく 51 になります。
JScript の Array オブジェクトと JScript の Object は、ほとんど同じです。主な違いは、JScript の Object には (既定では) 自動的に更新される length プロパティがない点と、Array の持つプロパティとメソッドがない点の 2 つです。詳細については、「JScript の Array オブジェクト」を参照してください。