Ojo con lo que me acabo de topar!
delete no varía la longitud del array!:
Código PHP:
var a=["uno","dos","tres","cuatro","cinco"];
for(var i in a)
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
for(var i=0; i<a.length; i++)
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
document.write("Longitud: "+a.length+"<br/><br/>");
//borramos
delete a[1];
for(var i in a)
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
for(var i=0; i<a.length; i++)
document.write(i+" --> "+a[i]+", ");
document.write("<br/>");
document.write("Longitud: "+a.length+"<br/>");
Cita: 0 --> uno, 1 --> dos, 2 --> tres, 3 --> cuatro, 4 --> cinco,
0 --> uno, 1 --> dos, 2 --> tres, 3 --> cuatro, 4 --> cinco,
Longitud: 5
0 --> uno, 2 --> tres, 3 --> cuatro, 4 --> cinco,
0 --> uno, 1 --> undefined, 2 --> tres, 3 --> cuatro, 4 --> cinco,
Longitud: 5
Pero for..in recorre todos los definidos y un for normal hasta donde le digamos, y cuidado si utilizamos length.
Solo por comentarlo.