昼寝帝国の逆襲

適当に書きます

JavaScriptの配列についてざっくり説明してみる【とりあえず配列編】

仕事してて後輩が書き残してったJavaScript見て絶句したのでこんな記事を書いてやることにした。

配列とは?

知らん。入門書でも読んでくれ。

連想配列とは?

知らん。入門書でも読んでくれ。

配列と連想配列の違い?

知らん。(以下略)

はい、概念とかよく分かりません。

というわけでざっくり説明します。
走査とかそういう扱い方の部分は、基本的には触れません。
あくまで初心者がざっくり理解しようって部分にどうでもいい説明をして混乱させてやろうってコンセプトです。
というか俺そもそもそんなに技術力ないから俺の言うことは真に受けちゃダーメ。
文才もないから内容に期待してもダ・メ☆

とりあえず配列。
//宣言して値をそのまま代入しちゃう
//その1
var array = ['Kongo', 'Hiei', 'Haruna', 'Kirishima'];

//その2
var array = new Array('Kongo', 'Hiei', 'Haruna', 'Kirishima');


//先に配列の宣言だけして値を代入していく
//その3
var array = [];
array[0] = 'Kongo';
array[1] = 'Hiei';
array[2] = 'Haruna';
array[3] = 'Kirishima';

//その4
var array = new Array();
array[0] = 'Kongo';
array[1] = 'Hiei';
array[2] = 'Haruna';
array[3] = 'Kirishima';

書き方としては大体上記の4パターンくらいじゃないすかね?全部同じ結果になるはずですけど。

その1その2とその3その4だと手順が違ってますが、前者ができちゃった婚、後者が結婚してから子作りに励んだくらいの認識でいいと思います。
データの入ってるイメージとしてはタンスとかそんな感じですね。各引き出しに1個データが入ってます。
1段目開けたら「英国で産まれた帰国子女の金剛デース!ヨロシクオネガイシマース!」って感じです。
って言ってみたけど、タンスって表現このあとちょっと面倒なんですよね。ふわっとイメージしといてください。

そんで多次元配列。

んでまあ、「○×ゲーム組んでみたいぞ」って思うと、タンスっていうよりも駅のコインロッカーみたいなの欲しくなりません?

A B C
D E F
G H I

って感じの表作って○×ゲームしたくありません?今時子供でもしませんよね。

そんなことはどうでもいいので、この表を配列で管理するとしたらどうしますかね?
絶対にお勧めしませんけど、こういうことができます

var array =[];
array[11] = 'A';
array[12] = 'B';
array[13] = 'C';
array[21] = 'D';
array[22] = 'E';
array[23] = 'F';
array[31] = 'G';
array[32] = 'H';
array[33] = 'I';

こんな感じで無理矢理やっちゃうことはできます。絶対にお勧めしませんけど。

ちなみにこうも書けます

var array =[null, null, null, null, null, null, null, null, null, null, null, 'A', 'B', 'C', null, null, null, null, null, null, null, 'D', 'E', 'F', null, null, null, null, null, null, null, 'G', 'H', 'I'];

気持ち悪いでしょ?
このやり方だと9×9までは何とかなるけど、10×10からはちょっと苦しくなります。
え、なりません?なってください。

そこで多次元配列ってのを使います。

//その1 配列を作ってから配列の配列にする
//まず配列を作る
var line1 = ['A', 'B', 'C'];//1行目
var line2 = ['D', 'E', 'F'];//2行目
var line3 = ['G', 'H', 'I'];//3行目

//配列の配列にしてあげる
var table = [line1, line2, line3];

//その2 いきなり配列の配列を作る
var table = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']];

//↑だと分かりにくいのでには改行して記述してあげます。
var table = [
    ['A', 'B', 'C'],
    ['D', 'E', 'F'],
    ['G', 'H', 'I']
];

こんな感じで配列の配列を作ります。配列の配列なんで2次元配列になります。
その2の改行ありの方が表をイメージしやすいと思います。
値を参照するときは

//Aを取り出したいとき
alert(table[0][0]);

//Fを取り出したいとき
alert(table[1][2]);

って感じで添え字を2個つけて指定すりゃなかみは取れます。
すっかり忘れてましたけど、配列の添え字は0から始まりますからね。
無理矢理やるより分かりやすいでしょ?
ちなみに「変数=箱」ってイメージだと、配列の配列の配列つまり3次元配列くらいがイメージの限界になります。
そりゃ生活してるの3次元までだから無理だっつう話ですよね。
普通にやってたら4次元に行く前に何かしらの事情で4次元になる前に何とかなって欲しいです。どうにもなりませんけど。



気が向いたら次は連想配列について書いてみるか。