O deleteoperador é usado para remover propriedades dos objetos.
const obj = { foo: "bar" }
delete obj.foo
obj.hasOwnProperty("foo") // false
Observe que, para matrizes, isso não é o mesmo que remover um elemento . Para remover um elemento de uma matriz, use Array#spliceou Array#pop. Por exemplo:
arr // [0, 1, 2, 3, 4]
arr.splice(3,1); // 3
arr // [0, 1, 2, 4]
Detalhes
deleteem JavaScript tem uma função diferente da palavra-chave em C e C ++: ela não libera memória diretamente. Em vez disso, seu único objetivo é remover propriedades dos objetos.
Para matrizes, a exclusão de uma propriedade correspondente a um índice cria uma matriz esparsa (isto é, uma matriz com um "furo" nela). A maioria dos navegadores representa esses índices de matriz ausentes como "vazios".
var array = [0, 1, 2, 3]
delete array[2] // [0, 1, empty, 3]
Observe que deletenão é realocado array[3]para array[2].
Diferentes funções internas no JavaScript lidam com matrizes esparsas de maneira diferente.
for...in pulará o índice vazio completamente.
Um forloop tradicional retornará undefinedpara o valor no índice.
Qualquer método usando Symbol.iteratorretornará undefinedpara o valor no índice.
forEach, mape reducesimplesmente pulará o índice ausente.
Portanto, o deleteoperador não deve ser usado para o caso de uso comum de remover elementos de uma matriz. As matrizes têm métodos dedicados para remover elementos e realocar memória: Array#splice()e Array#pop.
Matriz # emenda (start [, deleteCount [, item1 [, item2 [, ...]]]])
Array#splicemodifica a matriz e retorna todos os índices removidos. deleteCountelementos são removidos do índice starte item1, item2... itemNinseridos na matriz do índice start. Se deleteCountfor omitido, os elementos de startIndex serão removidos no final da matriz.
let a = [0,1,2,3,4]
a.splice(2,2) // returns the removed elements [2,3]
// ...and `a` is now [0,1,4]
Há também um nome semelhante, mas diferente, função em Array.prototype: Array#slice.
Matriz # fatia ([início [, fim]])
Array#sliceé não destrutivo e retorna uma nova matriz que contém os índices indicados de startpara end. Se não endfor especificado, o padrão será o final da matriz. Se endfor positivo, especifica o índice não inclusivo baseado em zero no qual parar. Se endfor negativo, especifica o índice no qual parar, contando desde o final da matriz (por exemplo, -1 omitirá o índice final). Se end <= start, o resultado é uma matriz vazia.
let a = [0,1,2,3,4]
let slices = [
a.slice(0,2),
a.slice(2,2),
a.slice(2,3),
a.slice(2,5) ]
// a [0,1,2,3,4]
// slices[0] [0 1]- - -
// slices[1] - - - - -
// slices[2] - -[3]- -
// slices[3] - -[2 4 5]
Matriz # pop
Array#popremove o último elemento de uma matriz e retorna esse elemento. Esta operação altera o comprimento da matriz.