Olá, Lais! Tudo bem?
Pense no método splice
como uma forma de juntar dois segmentos de listas. Entretanto, essa junção de segmentos ocorre da seguinte forma:
- Temos uma lista, como a
listaDeDestinos
; - Podemos escolher o índice em que queremos iniciar a alteração (é o primeiro parâmetro);
- Podemos escolher quantos itens da lista queremos remover, a partir do índice que passamos;
- Podemos passar novos itens para serem adicionados à lista, a partir do índice que passamos.
Então podemos fazer duas ações ao mesmo tempo: remover itens existentes e adicionar novos itens. Vamos focar na remoção:
Removendo itens de listas com o splice
Temos a seguinte forma de trabalhar com o splice
:
listaQueSeraModificada.splice(indiceQueSeraPontoDePartida, NumeroDeItensASeremRemovidos);
Então, se temos:
let listaDeDestinos = ['Porto Alegre', 'Florianópolis', 'Curitiba', 'São Paulo', 'Rio de Janeiro', 'Brasília', 'Natal'];
Possuímos uma lista com sete valores. Índices de arrays começam pelo 0
, então o item 'Porto Alegre'
possui o indíce 0
, e 'Natal'
possui o índice 6
.
Vamos supor que queremos remover dessa lista São Paulo e Rio de Janeiro. São Paulo está no índice 3
, e São Paulo e Rio de Janeiro somados são dois itens. Portanto:
Queremos remover 2 itens da lista, a partir do índice 3.
Se fizermos isso com o splice
, temos:
// splice recebe na primeira posição o índice inicial, e na segunda a quantidade de itens a remover
listaDeDestinos.splice(3, 2);
Para ficar ainda mais claro, o splice
retorna uma lista com os itens removidos:
let itensRemovidos = listaDeDestinos.splice(3, 2);
console.log(itensRemovidos); // ['São Paulo', 'Rio de Janeiro']
Resumindo, se queremos: remover de uma lista, a partir de um índice x
, n
itens, fazemos: lista.splice(x, n)
.
Adicionando e removendo itens com splice
Podemos também adicionar itens a uma lista ao mesmo tempo que fazemos a remoção. Esse é o terceiro parâmetro (e todos os outros em seguida) que o splice
pode ou não receber. Vamos supor que queremos fazer a mesma ação que fizemos acima, removendo São Paulo e Rio de Janeiro, e no lugar, adicionar Manaus e Salvador:
let itensRemovidos = listaDeDestinos.splice(3, 2, 'Manaus', 'Salvador');
console.log(listaDeDestinos); // ['Porto Alegre', 'Florianópolis', 'Curitiba', 'Manaus', 'Salvador', 'Brasília', 'Natal']
Perceba que passamos 'Manaus'
no terceiro parâmetro, mas também passamos 'Salvador'
em um quarto parâmetro. Isso acontece porque o splice
sabe que na primeira posição será o índice, na segunda posição a quantidade de itens a remover, então qualquer valor que venha a partir da terceira posição, é porque deve ser adicionado. Então podemos passar vários valores, e todos serão adicionados.
Isso é opcional, então podemos apenas remover itens com o splice
, ou podemos fazer essa junção de segmentos de listas (que eu mencionei lá no começo).
Certo? Espero que isso ajuda a entender. É normal levar um tempo para entender o splice
(e outros métodos de listas). Se quiser ver mais sobre esse método, recomendo a documentação da MDN sobre splice
.
Qualquer coisa é só avisar, bons estudos!