JavaScriptの連想配列。
要素数を取得するためには.lengthでは駄目。連想配列のため添え字が無効になるせいのようです。
そこで、通常は連想配列に対して
for (var in hash){
elementNum++;
}
で要素数をカウントするらしい。
【問題】
以下のコードを実行すると幾つが表示されるでしょう?
var hash = new Array();
hash["key1"] = "value1";
hash["key2"] = "value2";
var elementNum=0;
for(i in hash){
elementNum++;
}
window.alert(elementNum);
【正解】
elementNumは2ではなく40
ここでハマった。連想配列の宣言の仕方を間違えるととんでもないことになる。
今回hashをnew Array()で宣言したため、本来配列が持っているfunction名の"clone"とか"sort"をキーに持ってしまう。なので、keyの数は40という数字になるようだ。
なるほど。だからArray.cloneとかArray.sortなど".functions"で呼び出せるんだね。結局オブジェクトは全て連想配列だと考えればいいのか。
で、正しく連想配列を宣言するときはnew Array()ではなくnew Object()のようです。
0 件のコメント:
コメントを投稿