Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Comando " splice " não age como esperado

Criei um código para que excluísse de uma Array o destino exatamente igual ao do indicado no contador, porém ele exclui o primeiro destino. Utilizei o Debug, e ele pula a sentença assim que identifica que existe aquele destino dentro da Array. Queria saber como o comando splice agiu nesse caso. `let destinoDeInteresse = "Rio de Janeiro"; const destinosPossiveis = new Array ("Salvador", "São Paulo", "Maranhão", "Rio de Janeiro");

let contador = 0; while (contador <= 4){ if (destinosPossiveis[contador] == destinoDeInteresse){ destinosPossiveis.splice(contador,1); break; }else{ contador =contador+1; }

} console.log(destinosPossiveis);`

3 respostas

Boa notie Jocarlos, Não entendi muito bem o que quer saber:

Você criou um while e enquanto a condição for verdadeira ele vai executar, e a cada volta no if fazendo a verificação que você determinou, se a condição for falsa ele vai pro else e conta +1, agora se for verdadeira no caso destinosPossiveis[3] você chama o splice passando o primeiro parâmetro com o valor atual do contador que representa a posição dentro do array e o segundo parâmetro que é quantidade de itens que deseja excluir a partir da posição que informou no primeiro parâmetro(destinosPossiveis[3]).

Agora se você estiver querendo excluir um elemento do array e adicionar outro no lugar, informe o terceiro parâmetro, informando o que ficará no lugar do removido:

destinosPossiveis.splice(contador,1, "Amazonas"); 

Eu queria saber se dava para pontuar o item que desejo excluir utilizando o nome dele como primeiro parâmetro e não sua posição na determinada Array. Pelo que entendi, o comando identifica as sentenças apenas por parâmetros boleanos , correto?

solução!

Olá Jocarlos, boa noite!

*Resolução do Problema: *

De acordo com a sua pergunta, você gostaria de saber como foi o comportamento do metodo splice. Vamos lá.

*Solução do Problema: *

O metodo splice serve para adicionar ou excluir (ou os 2 ao mesmo tempo) um valor dentro de um array. Vamos a sintaxe:

splice(Inicio, excluir, valor1, valor2, ...)
  • O valor do1 parametro é um numero, ele serve para definir onde ele deve começar à adicionar ou excluir um valor.
  • O valor do 2 parametro é um numero, ele indica quantos valores você deseja excluir do array. Por exemplo, se o valor for 2, ele vai excluir 2 valores começando da posição 3 de um array.
  • Do 3 parametro em diante, pode ser qualquer valor: string, number, array, object e etc. Por exemplo, ele vai adicionar esse valor apartir da posição definida no 1 parametro da função.

E por fim, o valor que a função splice() retorna é um novo array com os valores alterados.

*Conclusão: *

No seu código, você exclui o valor informado no array de acordo com o contador, mas você não esta pegando novo array com o valor excluido que é o splice esta retornando.

Você deveria fazer isso lá dentro do if onde você usa splice:

destinosPossiveis = destinosPossiveis.splice(contador,1)

Isso vai fazer com que você tenha o array com o valor "Rio de Janeiro" excluido.

*Nota: *

No seu segundo comentário, você gostaria de saber se da para por o nome de um valor que esta dentro do array como argumento do 1 parametro do splice e não seu indice. A resposta para isso é não, não da, porque o valor do 1 parametro tem q ser um number.

Mas você pode usar o metodo indexOf(string) para obter o indice de um valor especifico em um array, e com esse valor você pode passar como argumento para o splice, desse jeito:

currentIndex = destinosPossiveis.indexOf(destinoDeInteresse)

destinosPossiveis = destinosPossiveis.splice(currentIndex,1)

*Despedida: *

Tenha um bom Estudo!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software