1
resposta

[Projeto] Amigo Secreto

let amigos = [];

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

    amigos.push(amigo.value);

    if (lista.textContent == '') {
        lista.textContent = amigo.value;
    } else {
        lista.textContent = lista.textContent + ', ' + amigo.value;
    }
    amigo.value = '';
}

function sortear() {
    embaralha(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 embaralha(lista) {

    for (let indice = lista.length; indice; indice--) {

        const indiceAleatorio = Math.floor(Math.random() * indice);

        // atribuição via destructuring
        [lista[indice - 1], lista[indiceAleatorio]] =
            [lista[indiceAleatorio], lista[indice - 1]];
    }
}

function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}
1 resposta

Olá Harlen! Tudo bem?

Seu código está bem organizado e funcional! Para garantir que o sorteio seja reiniciado corretamente, você já implementou a função reiniciar que limpa a lista de amigos e o resultado do sorteio. Isso é ótimo!

Vou sugerir uma pequena melhoria para garantir que a interface do usuário seja atualizada corretamente e que todos os elementos sejam redefinidos. Aqui está uma versão ligeiramente ajustada da função reiniciar:

function reiniciar() {
    amigos = [];
    document.getElementById('nome-amigo').value = ''; // Limpa o campo de entrada
    document.getElementById('lista-amigos').textContent = ''; // Limpa a lista de amigos
    document.getElementById('lista-sorteio').innerHTML = ''; // Limpa o resultado do sorteio
}

Essa função agora também limpa o campo de entrada (nome-amigo), garantindo que todos os elementos da interface sejam redefinidos para o estado inicial.

Bons estudos!