P115(7.6.2):配列要素の削除の注意点

配列要素にdelete()を掛けると要素が削除されるのではなく、未定義になるだけ。

var array = new Array("A", "B", "C");
alert(array);        //A,B,C
alert(array.length); //3

delete(array[1]);
alert(array);        //A,,C
alert(array.length); //3
alert(array[0]);     //A
alert(array[1]);     //undefined
alert(array[2]);     //C

未定義なので[1]で正常にアクセスもできるし、配列長も3を返す。