配列と連想配列の違い
まずは配列から。
配列
var array = [];
array.push('あ'); //console.log(array[0]); あ
array.push('い'); //console.log(array[1]); い
array.push('う'); //console.log(array[2]); う
array.push('え'); //console.log(array[3]); え
array.push('お'); //console.log(array[4]); お
array['あ','い','う','え','お']; //配列の中身
これが一般的な配列ですね。
[0]を一番左としインデックス番号で取得できます。
もちろん、番号ではなく値を指定して取得することも可能です。
ちなみに配列の中身はこんな感じになっています。
なんとなく配列はわかりました。
連想配列
次は連想配列です。
var ARRAY = [];
ARRAY['名前'] = '太郎'; //console.log(ARRAY['名前']); 太朗
ARRAY['年齢'] = '30'; //console.log(ARRAY['年齡']); 30
ARRAY['住所'] = '東京'; //console.log(ARRAY['住所']); 東京
//中身 [名前: "太朗", 年齢: "30", 住所: "東京"];
こんな感じです。
何が違うのかというのは見た感じわかりますが、何がどう違うのか。
配列ではarray[値, 値,・・・]だったのに対し、連想配列はARRAY[キー:値, キー:値・・・]といった中身になっています。
違いはこんな感じです。
要素数の確認方法
次は配列と連想配列の要素数の確認方法です。
配列は**.length**で取得できます。
var array = [];
array.push('あ'); //console.log(array[0]); あ
array.push('い'); //console.log(array[1]); い
array.push('う'); //console.log(array[2]); う
array.push('え'); //console.log(array[3]); え
array.push('お'); //console.log(array[4]); お
console.log(array.length); //5
連想配列では違うプロパティを使用します。
それが、**Object.keys(配列名).length;**です。
何故、配列ではlengthが使えて連想配列では使えないのかというと、配列とオブジェクトの違いです。
どう違うのかと言うと、配列はインデックス番号(添字とも言う)で管理されているのに対し、オブジェクトはプロパティで管理されている(キー:値)と言う違いがあります。
そして.lengthは添字を数えるものなんですね。
一方でObject.keys(配列名).lengthはプロパティを数えます。
これを知らずに.lengthで連想配列(オブジェクト)の要素を取得しようとしても、いつまでたっても0のままなので、気を付けて下さい。
まとめ
・配列はインデックス番号で取得する
・連想配列(オブジェクト)はキーで取得する
・配列とオブジェクトの違いは添字で管理されているのが配列。プロパティで管理されているのがオブジェクト。
・配列には.lengthを使用し、オブジェクトにはObject.keys(配列名).lengthを使う。