eis meu codigo
mas olha o que acontece
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
eis meu codigo
mas olha o que acontece
Olá, Jarede!
Aparentemente o problema está na lógica de resgatar o próximo nome do array.
No código fornecido, você está utilizando um loop for para percorrer o array amigos e exibir os nomes no elemento lista-sorteio. Porém, na última iteração do loop, quando o índice i é igual ao tamanho do array, você está tentando acessar o elemento amigos[i + 1], o que está causando o erro de "indefinido".
Para corrigir esse problema, você precisa fazer uma pequena alteração no seu código. No if que verifica se o índice i é igual ao tamanho do array, você deve atribuir o primeiro elemento do array ao próximo nome. Ou seja, em vez de amigos[i + 1], você deve utilizar amigos[0].
Aqui está o trecho de código corrigido:
for (let i = 0; i < amigos.length; i++) {
if (i == amigos.length - 1) {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>';
} else {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>';
}
}
Com essa alteração, o último elemento do array irá sortear o primeiro elemento corretamente.
Espero que essa solução resolva o seu problema! Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!
Pior que não deu certo. Deu na mesma:
let amigos = [];
function adicionar(){
let nomeAmigo = document.getElementById('nome-amigo');
let listaAmigos = document.getElementById('lista-amigos');
amigos.push(nomeAmigo);
if (listaAmigos.textContent == '') {
listaAmigos.textContent = nomeAmigo.value;
} else {
listaAmigos.textContent = listaAmigos.textContent + ', ' + nomeAmigo.value;
}
nomeAmigo.value = '';
}
function sortear() {
embaralhar(amigos);
let sorteio = document.getElementById('lista-sorteio');
for (let i = 0; i < amigos.length; i++) {
if (i == amigos.length - 1) {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>';
} else {
sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>';
}
}
}
function embaralhar(lista) {
for (let indice = lista.length; indice; indice--) {
const indiceAleatorio = Math.floor(Math.random() * indice);
[lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
}
}
Oi!
O problema está nessa sua linha, da função adicionar:
amigos.push(nomeAmigo);
Altere para:
amigos.push(nomeAmigo.value);