JavaScriptの配列
プログラミングでは、配列をうまく使うというのが大事なポイントだと思います。JavaScriptでは整数インデックスをとる普通の配列と、文字列をインデックスにする連想配列が利用できます。ここでは、まず通常の配列の使い方を見ていきましょう。
配列の宣言と初期化
配列の宣言には2つの方法があります。その2つをコードで見てみましょう。
const arr1=[]; // 空の配列を用意する
const arr2=Array(0); // 0個の要素を持つ配列を用意する
値で初期化するときには、次のように書きます。
const arr3=[1,10,12,45]; // 4つの整数で初期化された配列を用意する
const arr4=Array(4); // 4個の要素を持つ配列を用意する(要素の値は、undefined になっている)
const arr5=Array(1,10,12,45); // 4つの整数で初期化された配列を用意する
Array() を使う方法と、[] で初期化する方法が用意されています。Array() では、整数を1つだけ指定した時には、配列の大きさを指定したことになり、複数の引数を指定したときには、その値で初期化されます。ですから、要素が整数1個だけの配列をArray() の1行で初期化することはできません。次のように書く必要があります。
const arr6=Array(1); // 1個の要素を持つ配列を用意する(要素の値は、undefined になっている)
arr6[0]=23; // 値を初期化する
Array() と [] のどちらも速度面でも大きな違いはないようですので、[] を使うようにすればよいでしょう。
なお、Array では配列の要素に数値、文字列、オブジェクトなど何でも入れることができますが、Int8Array、Uint16Arrayなどのように型を指定できる「型付き配列」があり、そちらのほうが利用価値があります。そのため、次のような方針で配列を宣言しましょう。
- 型指定しないときは、[] で配列を宣言、初期化する
- 型指定したいときは、Int8Array のような型付き配列を使う
配列のキー
配列のキーは、0から始まる整数を使いますが、負の整数を使うこともできます。取り立ててそれが役に立つというケースは多くないように思いますが、覚えておくといいかもしれません。
const arr7=[1,2,3,4];
arr7[-1]=10;
配列は const がいい
ところで、先に宣言の例をいくつか紹介しましたが、宣言はすべて const でした。これはなぜかというと、const で宣言しても、配列の変数自体への再代入は禁止されますが、配列の要素への代入、配列要素の追加などはできます。その点では、const 配列といっても、「定数」と呼ぶのはちょっと違う感じがします。
const arr8=[2,3,4,5];
arr8[2]=21; // OK
arr8=[3,4,5,6,7]; // Error
配列の要素
ところで、配列にはなんでも入ります。次のようなコードを書くことができます。
const arr9=[2,"text",4.5,new Object()];
しかし、書くべきかというとこれは止めたほうがいいでしょう。こういう複雑なデータ構造を作りたいときはオブジェクトにすべきです。
多次元の配列
多次元の配列も宣言できます。
const arr10=[
[10,20,30],
[30,40,50],
[60,80,110] ];
arr10[0][1]=32;
let d = arr10[2][2]; // 110 になる
参照、代入もカギカッコ[] を重ねて書くだけです。ただ、データの構造にもよりますが、多次元といっても、よほどの必要性がない限り2次元ぐらいまでにとどめるほうが良いでしょう。
注
この記事は、ECMAScript 2015(ES6) を前提に書いています。古い実装では、異なる場合があります。