久々の投稿。寒いと色々進まなくなりますね。
よく javascript で .length をよく使うかと思います。
// こんな感じ。。。 var count = list.length ; for(var i = 0 ; i < count ; i++) { // 処理 }
配列の要素数を取得するのに使われることも多いと思いますが、
少し注意が必要なことがあります。
下記例1~3のように、挙動を確かめてみました。
例1)
<script type="text/javascript"> var list = [] ; console.log(list.length) ; // 0 と出力 /** この辺は普通 */ list[0] = "list-0" ; console.log(list.length) ; // 1 と出力 list[1] = "list-1" ; console.log(list.length) ; // 2 と出力 </script>
この辺は予想通りかと思います。
例2)
<script type="text/javascript"> var list = [] ; console.log(list.length) ; // 0 と出力 /** この辺は普通 */ list[0] = "list-0" ; console.log(list.length) ; // 1 と出力 list[1] = "list-1" ; console.log(list.length) ; // 2 と出力 /** key を飛ばしてみる */ list[10] = "list-10" ; console.log(list.length) ; // 11 と出力 </script>
.length は配列の要素数でなく、 key の最大値+1 を取得する為、
要素数は 3 つなのに length は 11 となります。
(list[10] を追加した後に list[9] = “***” ;と追加して出力しても 11 のままです)
例3)
<script type="text/javascript"> var list = [] ; console.log(list.length) ; // 0 と出力 /** この辺は普通 */ list[0] = "list-0" ; console.log(list.length) ; // 1 と出力 list[1] = "list-1" ; console.log(list.length) ; // 2 と出力 /** 数字以外は無視される */ list["key"] = "list-key" ; console.log(list.length) ; // 2 と出力 </script>
数字しか見てないので、数字以外の key の要素を入れても
length は変化しません。
上記のように、key を指定して配列に要素を追加した場合、
length で思ったような値を取れないことがある為、注意が必要ですね。
と、調べてて思いましたまる。