¿Por qué la eliminación de una matriz de Javascript no cambia su longitud?

Tengo una matriz:

data.Dealer.car[0] data.Dealer.car[1] data.Dealer.car[2] 

Si hago esto:

 alert(data.Dealer.car.length); delete data.Dealer.car[1]; alert(data.Dealer.car.length); 

Me da la misma cuenta cada vez. ¿Todavía existe el elemento eliminado?

6 Solutions collect form web for “¿Por qué la eliminación de una matriz de Javascript no cambia su longitud?”

Las matrices de JavaScript no son dispersas, si tiene un 0 y un 2, entonces el elemento 1 debe existir. Lo que significa que la length va a ser 3.

Si desea eliminar un elemento, utilice el método de splice :

 alert(data.Dealer.car.length); data.Dealer.car.splice(1, 1); alert(data.Dealer.car.length); 

Pero note que los índices han cambiado.

Array.shift () eliminaría el primer elemento de la matriz y lo acortaría. Array.pop () eliminará el último elemento.

Sobre la base de lo que @Ray Hidayat publicó:

Las matrices de JavaScript son escasas. Si tiene una matriz de longitud 3, eliminar la referencia en [1] simplemente “desarmará” ese elemento, no lo eliminará de la matriz ni actualizará la longitud de esa matriz. Podrías lograr lo mismo con

 myArray = [0, , 2, , , , ]; // length 6; last three items undefined 

Aquí hay un Fiddle: http://jsfiddle.net/WYKDz/

NOTA: la eliminación de elementos del centro de matrices grandes puede ser computacionalmente intensiva. Consulte esta publicación para obtener más información: la forma más rápida de eliminar una entrada desde la mitad de la matriz ()

Creo que estas buscando esto:

 var arr = [0,1,2,3,4]; alert( arr.splice( 2, 1 ) ); // alerts 2, the element you're removing alert( arr ) // alerts 0,1,3,4 - the remaining elements 

Aquí hay una referencia de MDC

Ok … arreglé esto ahora porque la matriz aún estaba asignada.

Básicamente necesitaba hacer:

 var newCar = new Array(); for (i = 0 ; i < tblSize -2; i ++) { newCar[i]=data.Dealer.car[i]; } data.Dealer.car = newCar; 
Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.