delete age como uma situação não real, apenas remove o item, mas o comprimento da matriz permanece o mesmo:
exemplo do terminal do nó:
> var arr = ["a","b","c","d"];
> delete arr[2]
true
> arr
[ 'a', 'b', , 'd', 'e' ]
Aqui está uma função para remover um item de uma matriz por índice, usando slice () , ela recebe o arr como o primeiro argumento e o índice do membro que você deseja excluir como o segundo argumento. Como você pode ver, ele realmente exclui o membro da matriz e reduz o comprimento da matriz em 1
function(arr,arrIndex){
return arr.slice(0,arrIndex).concat(arr.slice(arrIndex + 1));
}
O que a função acima faz é levar todos os membros até o índice e todos os membros após o índice, concatená-los juntos e retornar o resultado.
Aqui está um exemplo usando a função acima como um módulo de nó, pois o 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
observe que isso não funcionará em uma matriz com dupes, porque indexOf ("c") obterá a primeira ocorrência e somente emendar e remover o primeiro "c" encontrado.
.splice
loops in, dê uma olhada nesta pergunta: Exclua da matriz em javascript .