JavaScriptの連想配列は.lengthでは要素数を取得できないのでfor inを活用する

配列のつもりで要素数を「.length」で取得しようとしたが、連想配列では無理だった。

連想配列を.lengthで要素取得しようとするとundefined

サンプルコード

var myfavorites={
fruit:"durian",
drink:"ginger ale",
sport:"swimming",
radio:"lounge 44",
model:"jenn"
};

var len=myfavorites.length;
document.write(len); //5と表示されない→undefined

実行結果

このパラグラフの下にJavaScriptでコードを記述している。地味でごめん。

連想配列を配列と勘違いした理由

記述していた連想配列のプロパティを数字にしていたから。次のコードのような感じ。

var myfavorites={
1:{
fruit:"durian",
drink:"ginger ale"
},
2:{
sport:"swimming",
radio:"lounge 44",
model:"jenn"
},
3:{
book:"7 habits"
song:"eyes on me",
movie:"mannequin 2"
}
};

//連想配列をカウント
var len=0;
for (var i in myfavorites) {
len++;
}
document.write(len); //3と表示される。

//配列をカウントするが連想配列をカウントしない
var len=myfavorites.length;
document.write(len); //3と表示されない→undefined

上記コードの実行結果は次の通り。地味でごめん。

以上。

';