Métodos para modificar arrays
Aqui entra a ⚠️ ARMADILHA CLÁSSICA do módulo: alguns métodos mutam o array
original (mudam ele no lugar) e outros retornam uma cópia sem tocá-lo. Confundir
os dois é a origem de bugs bem traiçoeiros. Nesta lição, push, pop, shift,
unshift e splice mutam sim; slice não. Tenha isso em mente.
Adicionar e remover pelas extremidades
const pilha = [1, 2, 3];
pilha.push(4); // adiciona ao final -> [1, 2, 3, 4]
pilha.pop(); // remove do final -> [1, 2, 3]
pilha.unshift(0); // adiciona ao início -> [0, 1, 2, 3]
pilha.shift(); // remove do início -> [1, 2, 3]
| Método | O que faz | Retorna |
|---|---|---|
push |
adiciona ao final | o novo tamanho |
pop |
remove do final | o elemento removido |
unshift |
adiciona ao início | o novo tamanho |
shift |
remove do início | o elemento removido |
slice: copiar um pedaço (não modifica)
slice(inicio, fim) retorna uma cópia de inicio até logo antes de
fim. Não altera o array original.
const letras = ["a", "b", "c", "d"];
console.log(letras.slice(1, 3)); // ["b", "c"]
console.log(letras); // intacto: ["a","b","c","d"]
splice: inserir/remover (modifica sim)
splice(inicio, quantosApagar, ...novos) modifica o array no lugar:
const lista = ["a", "b", "c"];
lista.splice(1, 1); // apaga 1 a partir do índice 1 -> ["a", "c"]
lista.splice(1, 0, "x"); // insere "x" no índice 1 -> ["a", "x", "c"]
Regra mnemônica: slice slim (suave, copia); splice Sparta (rude, modifica).
Exemplos
push e pop sobre uma pilha
const tarefas = [];
tarefas.push("lavar");
tarefas.push("cozinhar");
tarefas.push("estudar");
console.log(tarefas); // ["lavar", "cozinhar", "estudar"]
const ultima = tarefas.pop();
console.log(ultima, tarefas); // "estudar" ["lavar", "cozinhar"]