連想配列の長さを調べる場合、配列と違ってArray.lengthでは取得できません。
JavaScriptのArray.lengthは、配列の数ではなくて「インデックスの最大値 + 1」を返します。
つまり配列のインデックスの最大数が10の場合、11が返されます。
これが連想配列の場合、インデックス(添え字)が数値でなくなるので、lengthが機能せず、取得できません。
連想配列で要素数を知りたい場合、一つ一つの要素をチェックする必要があります。
function hashLength(array){
var len = 0;
for(var key in array) { len++; }
return len;
}
詳細はこちら。
実はJavaScriptのlengthプロパティは配列要素数ではありません (WebTerminal)
なんでこんな仕様なんだろう…。
タグ:javascript メモ