2
respostas

Splice

Oi! Estou tentando de entender o splice, fiz vários os testes para remover um elemento da lista abaixo porém mesmo assim q não entendi:

listaDeDestinos.splice(1,1); => [ 'Salvador', 'Rio de Janeiro', 'Curitiba' ] listaDeDestinos.splice(1,2); => [ 'Salvador', 'Curitiba' ] listaDeDestinos.splice(1,3); => [ 'Salvador' ] listaDeDestinos.splice(2,1); => [ 'Salvador', 'São Paulo', 'Curitiba' ] listaDeDestinos.splice(2,2); => [ 'Salvador', 'São Paulo' ] listaDeDestinos.splice(2,3); => [ 'Salvador', 'São Paulo' ] listaDeDestinos.splice(3,1); => [ 'Salvador', 'São Paulo', 'Rio de Janeiro' ] listaDeDestinos.splice(3,2); => [ 'Salvador', 'São Paulo', 'Rio de Janeiro' ] listaDeDestinos.splice(3,3); => [ 'Salvador', 'São Paulo', 'Rio de Janeiro' ]

2 respostas

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!

Oi Lais eu vou tentar simplificar o Splice:

em resumo o método splice() altera o conteúdo de uma lista, adicionando novos elementos enquanto remove elementos antigos.

nós teremos um array:

let meusAnimais = ["cachorro", "gato", "macaco", "elefante"];

se você deseja apenas remover 1 item do seu array de animais, você deve seguir o seguinte pensamento: splice(IndiceDoArray, QuantidadeElementosRemovidos). Ou seja, o primeiro parametro do splice indica a partir de qual item você deseja começar a remover, e o segundo parametro é a quantidade de items que serão removidos.

Então caso eu queira remover o animal "gato", eu devo fazer o seguinte código:

meusAnimais.splice(1,1)

o resultado disso resultará no novo array: ["cachorro", "macaco", "elefante"] , pois a partir do indice 1 eu pedi para que fosse removido 1 elemento.

Caso agora eu queira remover o cachorro, devo começar a remover a partir do indice 0 apenas 1 elemento:

meusAnimais.splice(0,1)

O novo array será: ["macaco", "elefante"]