1
resposta

[Dúvida] Qual o problema do meu código?

let amigos = [];

function adicionar(){ let amigo = document.getElementById('nome-amigo'); let lista = document.getElementById('lista-amigos');

if (lista.textContent == '') {
    lista.textContent = amigo.value;
    amigos.push(amigo.value);
} else {
    lista.textContent = lista.textContent + ', ' + amigo.value;
}
amigo.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 + 1)); [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]]; } }

1 resposta

Olá, Adrian!

Seu código está quase lá, mas há alguns pontos que podem ser melhorados para garantir que ele funcione corretamente. Vou destacar algumas melhorias e correções:

  1. Adicionar amigos na lista: Sua função adicionar está quase correta, mas você pode simplificá-la um pouco e garantir que os amigos sejam adicionados corretamente à lista.

  2. Função de sorteio: Na função sortear, você está acumulando o conteúdo de sorteio.innerHTML sem limpá-lo antes de adicionar novos valores. Isso pode causar duplicação de resultados se a função for chamada mais de uma vez.

Aqui está uma versão revisada do seu código:

let amigos = [];

function adicionar() {
    let amigo = document.getElementById('nome-amigo').value;
    let lista = document.getElementById('lista-amigos');

    if (amigo) {
        amigos.push(amigo);
        lista.textContent = amigos.join(', ');
        document.getElementById('nome-amigo').value = '';
    }
}

function sortear() {
    embaralhar(amigos);
    let sorteio = document.getElementById('lista-sorteio');
    sorteio.innerHTML = ''; // Limpa o conteúdo antes de adicionar novos valores

    for (let i = 0; i < amigos.length; i++) {
        if (i == amigos.length - 1) {
            sorteio.innerHTML += amigos[i] + ' --> ' + amigos[0] + '<br/>';
        } else {
            sorteio.innerHTML += amigos[i] + ' --> ' + amigos[i + 1] + '<br/>';
        }
    }
}

function embaralhar(lista) {
    for (let indice = lista.length - 1; indice > 0; indice--) {
        const indiceAleatorio = Math.floor(Math.random() * (indice + 1));
        [lista[indice], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice]];
    }
}

Espero ter ajudado e bons estudos!