Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Listas

Se eu tiver uma lista com 68 lugares diferentes, mas quero excluir um lugar que seja o número 47, vou ter que ficar contando? Tentei solucionar pondo números. Ex:

const listaDeDestinos = new Array(
1- salvador,
2-São Paulo,
3- Rio de Janeiro,
4-Sergipe
`

contei pelos números e quero excluir o rio de janeiro.


listaDeDestinos.splice(2,1);
console.log(listaDeDestinos);

Mas agora eu quero readicionar o rio de janeiro.

listaDeDestinos.push(`3-Rio de Janeiro`);

O resultado é que ele vai aparecer após Sergipe, em último e não quero isso, quero na posição de origem.

*1- Como obter uma posição sem contar à mão? *2- Como readiconar na posição de origem?

1 resposta
solução!

Olá Marcos, tudo bem?

Temos dois pontos para conversar, vamos lá!

Como obter a posição de um elemento de forma mais automatizada

Nós podemos encontrar a posição da cidade utilizando o método findIndex() do JavaScript, que tem o papel de retornar o índice do elemento do array que estamos procurando. O findIndex desempenha o seu papel em conjunto com uma outra função, que é passada por parâmetro para ele.

Primeiro, criaremos essa função que auxilia o findIndex. Ela tem o objetivo de retornar o nome da cidade que queremos encontrar a posição, neste caso 'Sergipe'.

function encontrarCidade (cidade) {
    return cidade === 'Sergipe'
}

Em seguida, iremos adicionar o findIndex ao nosso array listaDeDestino e chamaremos a função encontrarCidade no parâmetro.

listaDeDestinos.findIndex(encontrarCidade)

Beleza! Então para vermos no console.log qual é o índice de 'Sergipe', armazenaremos o método em uma variável.

let posicaoElemento = listaDeDestinos.findIndex(encontrarCidade)
console.log('A posição de Sergipe é: ' + posicaoElemento)

Resultado:

A posição de Sergipe é: 3

Dessa forma, quando você quiser encontrar o índice de qualquer elemento da sua lista de 68 posições, basta substituir 'Sergipe' na função encontrarCidade pelo nome do elemento que está procurando.

Como adicionar o elemento novamente a sua posição de origem

Assim como você fez, iremos excluir 'Rio de Janeiro' do array.

listaDeDestinos.splice(2,1);
console.log(listaDeDestinos);

Resultado:

Lista de destinos = salvador,São Paulo,Sergipe

Agora, adicionaremos 'Rio de Janeiro' a sua posição de origem, só que dessa vez passaremos 3 argumentos no parâmetro. Veja:

listaDeDestinos.splice(2, 0, 'Rio de Janeiro')
console.log('Lista de destinos = ' + listaDeDestinos);

Resultado:

Lista de destinos = salvador,São Paulo,Rio de Janeiro,Sergipe

O primeiro parâmetro é referente a posição que estamos trabalhando, o segundo sendo 0 indica que nenhum elemento está sendo removido e o terceiro é o elemento que ocupará essa posição.

Código completo:

const listaDeDestinos = new Array(
    'salvador',
    'São Paulo',
    'Rio de Janeiro',
    'Sergipe')

function encontrarCidade(cidade) {
    return cidade === 'Sergipe'
}

let posicaoElemento = listaDeDestinos.findIndex(encontrarCidade)
console.log('A posição de Sergipe é: ' + posicaoElemento)


listaDeDestinos.splice(2,1);
console.log('Lista de destinos = ' + listaDeDestinos);

listaDeDestinos.splice(2, 0, 'Rio de Janeiro')
console.log('Lista de destinos = ' + listaDeDestinos);

Aproveito para indicar esse curso novo da plataforma que foca bastante em listas, acho que você irá se interessar.

Espero ter ajudado, em caso de dúvidas fique a vontade para perguntar. Bons estudos!