delete si comporta come una situazione non reale, rimuove semplicemente l'elemento, ma la lunghezza dell'array rimane la stessa:
esempio dal terminale del nodo:
> var arr = ["a","b","c","d"];
> delete arr[2]
true
> arr
[ 'a', 'b', , 'd', 'e' ]
Ecco una funzione per rimuovere un elemento di un array per indice, usando slice () , prende arr come primo argomento e l'indice del membro che si desidera cancellare come secondo argomento. Come puoi vedere, elimina effettivamente il membro dell'array e ridurrà la lunghezza dell'array di 1
function(arr,arrIndex){
return arr.slice(0,arrIndex).concat(arr.slice(arrIndex + 1));
}
Ciò che fa la funzione sopra è portare tutti i membri all'indice e tutti i membri dopo l'indice, li concatena insieme e restituisce il risultato.
Ecco un esempio usando la funzione sopra come modulo di nodo, vedere il terminale sarà utile:
> 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
si noti che questo non funzionerà un array con duplicati in esso, perché indexOf ("c") otterrà solo la prima occorrenza e si separerà e rimuoverà solo la prima "c" che trova.
.splice
nei loop, dai un'occhiata a questa domanda: Elimina dall'array in javascript .