1
resposta

[Projeto] Resolução sem o algoritmo de embaralhar

Acabei fazendo o sorteio de forma diferente, não utilizei o algoritmo pronto. Ao invés disso, meu código gera números aleatório até formar um array com números diferentes. Depois faz a verificação se algum amigo tenha sorteado a si próprio, se sim, realizava o sorteio novamente. Quebrei a cabeça mas esta funcional.

let listaDeAmigos = [];

function adicionar() {
    // Verifica se foi informado algum nome.
    if (document.getElementById('nome-amigo').value == ''){
        alert('Insira um nome.');
        return;
    }
    // Verifica se o nome já foi inserido.
    for (i = 0; i < listaDeAmigos.length; i ++) {
        if (listaDeAmigos[i] == document.getElementById('nome-amigo').value) {
            alert('Esse nome já foi inserido.');
            return;
        }
    }
    listaDeAmigos.push(document.getElementById('nome-amigo').value);
    document.getElementById('lista-amigos').innerHTML = listaDeAmigos;
    document.getElementById('nome-amigo').value = '';
}

function sortear() {
    document.getElementById('lista-sorteio').innerHTML = '';
    listaSorteados = [];
    for (i = 0; i < listaDeAmigos.length; i ++) {
        n = Math.floor(Math.random() * (listaDeAmigos.length));      
        while (listaSorteados.includes(n)) {
            n = Math.floor(Math.random() * listaDeAmigos.length);
        }
        listaSorteados.push(n);
        if (listaDeAmigos[i]  == listaDeAmigos[listaSorteados[i]]) {
            sortear();
            return;
        }
        document.getElementById('lista-sorteio').innerHTML += `${listaDeAmigos[i]} --> ${listaDeAmigos[listaSorteados[i]]}<br>`;
    }
}

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

Oi Marcone!

Que legal que você conseguiu fazer o sorteio funcionar! Seu esforço em implementar uma solução própria é muito bacana, tenho certeza que isso ajuda muito na fixação do conhecimento e o mais legal inspirar outros alunos, e mostra que a programação, tem vários caminhos para se chegar na mesma solução.

Continue praticando e explorando cada vez mais!

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!