JavaScript 配列
配列は、複数の値を保持できる特別な変数です。
配列を使用する理由
アイテムのリスト(車の名前のリストなど)がある場合、車を単一の変数に格納すると、次のようになります。
しかし、車をループして特定の車を見つけたい場合はどうすればよいでしょうか?車が3台ではなく 300台だったらどうでしょうか。
解決策は配列です!
配列は1つの名前で多くの値を保持でき、インデックス番号を参照して値にアクセスできます。
配列の作成
JavaScript配列を作成する最も簡単な方法は、配列リテラルを使用することです。
構文:
スペースと改行は重要ではありません。宣言は複数の行にまたがることができます。
配列を作成して、要素を提供することもできます。
JavaScript newの使用
次の例でも配列を作成し、それに値を割り当てます。
上記の2つの例は、まったく同じことを行います。
new Array()
使用する必要はありません。
単純化、読みやすさ、および実行速度のために、配列リテラルメソッドを使用します。
配列要素へのアクセス
インデックス番号を参照して配列要素にアクセスします。
注意:配列のインデックスは0から始まります。
[0]は最初の要素です。[1]は2番目の要素です。
配列要素の変更
このステートメントは、最初の要素の値を変更します。配列を文字列に変換する
JavaScriptのメソッドtoString()
は、配列を(カンマ区切りの)配列値の文字列に変換します。例
完全な配列へのアクセス
JavaScriptでは、配列名を参照することで完全な配列にアクセスできます。
配列はオブジェクトです
配列は特別なタイプのオブジェクトです。JavaScriptのtypeof
演算子は、配列の「オブジェクト」を返します。
ただし、JavaScript配列は配列として説明するのが最も適切です。
配列は数値を使用して、その「要素」にアクセスします。この例では、person[0]
のジョンを返します。
オブジェクトは名前を使用してその「メンバー」にアクセスします。この例では、person.firstName
Johnを返します。
配列要素はオブジェクトにすることができます
JavaScript変数はオブジェクトにすることができます。配列は特別な種類のオブジェクトです。
このため、同じ配列に異なる型の変数を含めることができます。
配列の中にオブジェクトを持つことが出来ます。配列の中に関数を持つことが出来ます。配列の中に配列を持つことが出来ます。
配列のプロパティとメソッド
JavaScript配列の真の強みは、組み込みの配列プロパティとメソッドです。
配列メソッドについては、次の章で説明します。
length プロパティ
length
プロパティは、配列の長さ(配列要素の数)を返します。
length
プロパティは、常に最大の配列インデックスよりも1つ大きくなります。
最初の配列要素へのアクセス
最後の配列要素へのアクセス
配列要素のループ
配列をループする1つの方法は、for
ループを使用することができます。
例
また、Array.forEach()
関数も使用できます。
例
配列要素の追加
新しい要素を配列に追加する最も簡単な方法は、push()
メソッドを使用します。
length
プロパティを使用して新しい要素を配列に追加することもできます。
例
警告!
高いインデックスを持つ要素を追加すると、配列に未定義の「穴」が作成される可能性があります。
連想配列
多くのプログラミング言語は、名前付きインデックスを持つ配列をサポートしています。
名前付きインデックスを持つ配列は、連想配列(またはハッシュ)と呼ばれます。
JavaScriptは名前付きインデックスを持つ配列をサポートしません。
JavaScriptでは、配列は常に番号付きインデックスを使用します。
例
警告!!
名前付きインデックスを使用する場合、JavaScriptは配列をオブジェクトに再定義します。
その後、いくつかの配列メソッドとプロパティが誤った結果を生成されます。
例:
配列とオブジェクトの違い
JavaScriptでは、配列は番号付きインデックスを使用します。
JavaScriptでは、オブジェクトは名前付きインデックスを使用します。
配列は、番号付きのインデックスを持つ特別な種類のオブジェクトです。
配列を使用する時、オブジェクトを使用する時。
・JavaScriptは連想配列をサポートしていません。
・要素名を文字列 (テキスト)にする場合は、オブジェクトを使用する必要があります。
・要素名を数字にする場合は、配列を使用する必要があります。
JavaScript new Array()
JavaScriptには組み込みの配列コンストラクターnew Array()
があります。
その代わり、[]
でも安心して使えます。
次の 2 つの異なるステートメントは、pointsという名前の新しい空の配列を作成します。
次の2つの異なるステートメントは両方とも、6つの数値を含む新しい配列を作成します。
new
で予期しない結果が生じる場合があります。
よくある間違い
この2つのコードは同じではありません。
配列を認識する方法
よくある質問: 変数が配列かどうかはどうすればわかりますか?
問題は、JavaScript演算子が"typeof
""object
"を返すことです。
JavaScript配列はオブジェクトであるため、typeof演算子はobjectを返します。
解決策 1:
この問題を解決するために、ECMAScript 5(JavaScript 2009)は新しいメソッドArray.isArray()
を定義しました。
解決策 2:
instanceof
オブジェクトが特定のコンストラクターによって作成された場合、演算子はtrueを返します。
完全な配列リファレンス
配列の完全なリファレンスについては、次のURLにアクセスしてください。完全なJavaScript配列リファレンス
このリファレンスには、配列のすべてのプロパティとメソッドの説明と例が含まれています。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。