3
respostas

[Projeto] Amigo Secreto

GitHub: https://github.com/Alekzinho/Projeto-Amigo-Secreto

let nomesIncluidos = [];
let sorteados = [];

function adicionar() {
    let inputNome = document.getElementById("nome-amigo").value.trim();
    
    if (inputNome == "") {
        return;
    }

    nomesIncluidos.push(inputNome);    
    document.getElementById("lista-amigos").innerHTML = nomesIncluidos.join(", ");
        
    document.getElementById("nome-amigo").value = "";
    
}

function sortear() {
    for (let i = 0; i < nomesIncluidos.length; i++) {
        
        let sortearNomes = nomesIncluidos[parseInt(Math.floor(Math.random() * nomesIncluidos.length))];
        
        while (sorteados.includes(sortearNomes) || nomesIncluidos[i] == sorteados[i]) {
            sortearNomes = nomesIncluidos[parseInt(Math.floor(Math.random() * nomesIncluidos.length))];
        }
        
        sorteados.push(sortearNomes);

        document.getElementById("lista-sorteio").appendChild(document.createElement("p")).innerHTML = `${nomesIncluidos[i]} -> ${sorteados[i]}`;
        console.log(sorteados);
    }
}

function reiniciar() {
    document.getElementById("nome-amigo").value = "";
    document.getElementById("lista-amigos").innerHTML = "";
    document.getElementById("lista-sorteio").innerHTML = "";

}

// Não consegui fazer com que a pessoa não sorteasse ela mesma!
3 respostas

Problema solucionado de acordo com o vídeo:

function sortear() {
    embaralha(nomesIncluidos);
    
    for (let i = 0; i < nomesIncluidos.length; i++) {
        if (i == nomesIncluidos.length - 1) {
           document.getElementById("lista-sorteio").appendChild(document.createElement("p")).innerHTML = `${nomesIncluidos[i]} --> ${nomesIncluidos[0]}`;
        } else {
            document.getElementById("lista-sorteio").appendChild(document.createElement("p")).innerHTML = `${nomesIncluidos[i]} --> ${nomesIncluidos[i + 1]}`;
        }
    }
}

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]];
    }
}

Corrigindo erro:

function reiniciar() {
    nomesIncluidos = []; //Correção
    document.getElementById("nome-amigo").value = "";
    document.getElementById("lista-amigos").innerHTML = "";
    document.getElementById("lista-sorteio").innerHTML = "";

}

Bom dia! Como está?

Incrível demais, Alex!

Notei que você utilizou o método de embaralhamento com destructuring para reorganizar os elementos da lista, aplicou de forma eficaz o for com appendChild() para exibir os pares sorteados na tela e compreendeu a importância do template literal para tornar a saída mais clara e dinâmica.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!