Esvaziar um Array em JavaScript

Kirill Ibrahim 12 outubro 2023
  1. Definir array para Nova Matriz de Tamanho Zero
  2. Utilize a propriedade length para Esvaziar um Array em JavaScript
  3. Utilize o splice() Método para Esvaziar um Array em JavaScript
  4. Utilize o pop() Método para Esvaziar um Array em JavaScript
  5. Modificar métodos nativos para esvaziar um array em JavaScript
Esvaziar um Array em JavaScript

O array é uma colecção de artigos armazenados num array conveniente e indexado. E se quisermos esvaziar um array que contém itens múltiplos?

Este tutorial introduz diferentes métodos de como esvaziar um array em JavaScript.

Definir array para Nova Matriz de Tamanho Zero

É a forma mais rápida. Isto irá definir a array para uma nova array vazia.

let Arr = [1, 2, 3, 4];
Arr = [];

É simples se não tiver nenhuma referência de outros locais ao array original. Estas referências não serão actualizadas se o fizer, e esses locais continuarão a utilizar a array antiga. Isto significa que as referências ao conteúdo do array anterior ainda são mantidas na memória, levando a fugas de memória.

Só utilizar isto se fizer referência à array pela sua variável original Arr.

O exemplo de código abaixo mostra o problema que pode encontrar ao utilizar este método:

let Arr1 = [1, 2, 3, 4, 5, 6];
let Arr2 = Arr1;
Arr1 = [];
console.log({Arr1, Arr2});

Resultado:

{
  Arr1: [],
  Arr2: [1, 2, 3, 4, 5, 6]
}

Utilize a propriedade length para Esvaziar um Array em JavaScript

A propriedade do comprimento de um array é uma propriedade de leitura/escrita, pelo que também funciona quando se utiliza o modo estrito do ECMAScript 5.

Arr1.length = 0

Esta forma tem uma vantagem porque apaga tudo no array, o que tem impacto noutras referências. Se tivermos duas referências ao mesmo array, apagamos o conteúdo do array utilizando Arr1.length = 0, ambas as referências irão agora apontar para o mesmo array vazio.

Exemplo:

let foo1 = [1, 2, 3];
let bar1 = [1, 2, 3];
let foo2 = foo1;
let bar2 = bar1;
foo1 = [];
bar1.length = 0;
console.log({foo1, bar1, foo2, bar2});

Resultado:

{
  bar1: [],
  bar2: [circular object Array],
  foo1: [],
  foo2: [1, 2, 3]
}

Utilize o splice() Método para Esvaziar um Array em JavaScript

O método array.splice() é um método incorporado em JavaScript, que é utilizado para adicionar/remover itens de/para um array e devolve os itens removidos.

let Arr1 = ['Tomato', 'Letcuce', 'Spinash', 'Cucumber'];
Arr1.splice(2, 0, 'Lemon', 'Kiwi')
console.log(Arr1);

Resultado:

["Tomato", "Letcuce", "Lemon", "Kiwi", "Spinash", "Cucumber"]

Para esvaziar o array:

Arr1.splice(0, Arr1.length);
console.log(Arr1);

Resultado:

[]

Remove todos os elementos do array e limpa o array original.

Utilize o pop() Método para Esvaziar um Array em JavaScript

O método pop() remove o último elemento de um array e devolve esse elemento. E alterará o comprimento do array.

let vegetables = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];

console.log(vegetables.pop());

console.log(vegetables);

Resultado:

tomato
(4) ["broccoli", "cauliflower", "cabbage", "kale"]

Fazemos um loop no array, colocamos o elemento do array em cada loop, e finalmente obtemos o array vazio.

let Arr1 = [1, 2, 3, 4, 5];
for (let i = Arr1.length; i > 0; i--) {
  Arr1.pop();
}
console.log(Arr1);

Resultado:

[]

Esta solução não é muito concisa, e é também a solução mais lenta.

Modificar métodos nativos para esvaziar um array em JavaScript

A última técnica desta lista pode ser utilizada com todos os métodos acima; o JavaScript permite-nos modificar e utilizar métodos nativos para alargar as suas capacidades. Podemos utilizar a função Array.proptotype.remove para modificar o processo.

No exemplo abaixo, utilizamos o método splice(), que utilizámos no exemplo anterior. Agora, podemos utilizar o processo chamando-o como a função arr.remove().

var arr = [1, 2, 3, 4, 5, 6];

Array.prototype.remove = Array.prototype.remove || function() {
  this.splice(0, this.length);
};

arr.remove();
console.log(arr);

Resultado:

[]

Artigo relacionado - JavaScript Array