配列の利用
1. 配列の宣言変数を多数使うときに,それぞれの変数に名前を付けて準備するのは大変です.配列を使うと,1つの名前と番号によって多くの変数を管理できます.
【配列の宣言】
newは小文字で,Array()は大文字で始めなければならない.配列名 = new Array(); ≪例≫ book1 = new Array(); javascriptの配列は,要素数を後から指定することも,後から要素数を変更することも,宣言と同時に初期化することもできます.
【配列の要素数も指定して宣言】
配列名 = new Array(要素数); ≪例≫ book1 = new Array(10);
【配列宣言と同時に初期化】
配列名 = new Array(要素,要素,要素,...); ≪例≫ city1 = new Array('tokyo','osaka','kobe'); num1 = new Array(3,5,0,1); |
2. 配列の要素
(1) 配列の要素は,0番から始まる番号で参照されます.
≪例≫(2) 配列要素の番号は,カギ括弧[ ]の中に書きます. (3) 要素数がn個の配列には,第n要素はありません. (4) 配列の要素数は,配列名.lengthで求められます. 3個の要素から成る配列 letter1 = new Array('a','b','c');について (1)(2) letter1[0]は'a',letter1[1]は'b',letter1[2]は'c'です. (3) letter1[3]はありません. (4) letter1.lengthは3になります.
※このような,n個からなるものを0番からn−1番までの番号で表す方法は,プログラミング言語で広く使われています.
初めは違和感があるかもしれませんが,慣れれば問題ありません. 例えば,配列のすべての要素を表示する場合 for(kk = 0; kk < letter1.length; kk++) document.write(letter1[kk]); のように0スタートにして,要素数を不等号にするとよい. |
【例1】宣言と同時に初期化する場合 num1 = new Array(2,5,1);
【例2】要素数3を指定して宣言する場合
num1 = new Array(3);←カッコ内は要素数
【例3】後から要素数を変更してもよいnum[0] = 2;←後から個別に要素に値を代入できる num[1] = 5; num[2] = 1;
num1 = new Array(2,5,1);
num[3] = 7;←これで要素数は4になる. |
【よくある間違い1】 num1 = new array();←小文字では配列にならない
【よくある間違い2】num1 = new Array(3);←整数1個の配列のつもり
※要素数が1個の配列も定義できるが,整数1個の配列はこの書き方では初期化できない.この書き方では,要素数が3個で,各々の値は未定義ということになる. 3という1つの要素をもつ配列にするには num1 = new Array(1); num1[0] = 3;などとする. |
3. 多次元配列 配列の要素が配列であることもできます:二次元配列になります.
【例4】
(1) このnum2は二次元配列になります.num2 = new Array();
num2[0] = new Array(3,4);
num2[1] = new Array(1,3,7,9); num2[2] = new Array(2,4,6); (2) 個々の要素は,num2[0][0]→2, num2[0][1]→4 …num2[2][2]→6となります. (3) 配列の要素数は, num2.length→3 , num2[0].length→2 , num2[1].length→4 , num2[2].length→3となります. |
【例5】 次のように書くこともできます.
三次元以上の配列も定義できます.num2 =new Array(new Array(3,4),new Array(1,3,5));
【例6】
num3[0][0][1]→2 , num3[1][0][2]→7などとなります.
num3 = new Array();
num3[0] = new Array();
num3[0][0] = new Array(1,2);
num3[1] = new Array();num3[0][1] = new Array(-1,3);
num3[1][0] = new Array(5,6,7);
num3[1][1] = new Array(4,8); |
【例1】
(答案例)アルファベット小文字の配列 abc1 = new Array('a','b','c','d','e','f','g'); について (1) 0スタートの番号で3番目の要素を表示してください. (2) 0スタートの番号で4番目の要素を大文字の'E'に書き換えてから,配列の要素を全て表示してください. (3) 配列の要素を1つ増やして'h'を追加してください. (1) (2) (3) |
【例2】
(答案例)二次元配列 pref1 = new Array();
pref1[0] = new Array('沖');
についてpref1[1] = new Array('鹿','宮','大','熊','長','佐','福'); pref1[2] = new Array('徳','高','愛','香'); (1) プログラムを使って,配列の全要素数を表示してください. (2) プログラムを使って,'高'という要素がある配列番号(0スタートの番号)を調べてください. (1)→12 (2)→[2][1] |
【例3】
西暦年が4で割り切れる年はうるう年,ただし100で割り切れる年は平年,400で割り切れる年はうるう年です.(1)(2)の期間ではうるう年は2020年だけです.平年とうるう年の日数の配列 month_day = new Array();
month_day[0]=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
を使って,次の問いに答えてください.なお,2018年1月1日が月曜日であることを使ってよい.month_day[1]=new Array(31,29,31,30,31,30,31,31,30,31,30,31); (1) 2018年8月1日は何曜日か. (2) 2020年10月3日は何曜日か. (答案例) (1)→水 (2)→土 |
【例4】
(答案例)自然数を次のような群数列に分け,第20群まで考えるとき,配列を利用して次の問いに答えてください. 1 | 2 , 3 | 4 , 5 , 6 | 7 , … (1) 第10群の第3項は幾らか. (2) 元の数列の第100項は,群数列では第何群の第何項か. (3) 第15群の項の和は幾らか. (1) → 48になります. (2) → 第13群の第8項になります. (3) → 1695 |