delete actúa como una situación del mundo no real, solo elimina el elemento, pero la longitud de la matriz permanece igual:
ejemplo de terminal de nodo:
> var arr = ["a","b","c","d"];
> delete arr[2]
true
> arr
[ 'a', 'b', , 'd', 'e' ]
Aquí hay una función para eliminar un elemento de una matriz por índice, usando slice () , toma el arr como el primer argumento y el índice del miembro que desea eliminar como el segundo argumento. Como puede ver, en realidad elimina el miembro de la matriz y reducirá la longitud de la matriz en 1
function(arr,arrIndex){
return arr.slice(0,arrIndex).concat(arr.slice(arrIndex + 1));
}
Lo que hace la función anterior es llevar todos los miembros al índice, y todos los miembros después del índice, y los concatena juntos, y devuelve el resultado.
Aquí hay un ejemplo usando la función anterior como un módulo de nodo, ver el terminal será útil:
> var arr = ["a","b","c","d"]
> arr
[ 'a', 'b', 'c', 'd' ]
> arr.length
4
> var arrayRemoveIndex = require("./lib/array_remove_index");
> var newArray = arrayRemoveIndex(arr,arr.indexOf('c'))
> newArray
[ 'a', 'b', 'd' ] // c ya later
> newArray.length
3
tenga en cuenta que esto no funcionará en una matriz con duplicados, porque indexOf ("c") solo obtendrá la primera aparición, y solo empalmará y eliminará la primera "c" que encuentre.
.splice
bucles, eche un vistazo a esta pregunta: Eliminar de la matriz en javascript .