#JavaScriptの配列にマイナス値をキーに使ってハマった話
lengthでキーの数を拾ってループさせているつもりなのに、
何か挙動がおかしくて、検証してみました。
マイナス値のキー値を使うと、lengthでキーの数は拾えないことがわかりました。
#サンプルコード
a=[];
a[1]="one";
alert("1:"+a);
// 1:,one
alert("length:"+a.length);
// lenght:2
a[-1]="minus one"
alert("-1:"+a[-1]);
// -1:minus one
alert("a:"+a);
//a:,one キー「-1」が表示されない!
alert("length:"+a.length);
//length:2 キー「-1」がlengthでカウントていない!
alert("keys:"+Object.keys(a));
// keys:1,-1 キーとしては存在
#まとめ
そもそも要素数とキーの数は一致しないこともわかりました。