Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Sortear

function sortear() {
    if (listaNomes.length  <  4) {
        return alert('É nescessario 4 ou mais pessoas');
    }
    let resultado = document.getElementById('lista-sorteio');
    let listaSorteados = [];
    for (var i = 0; i < listaNomes.length; i++) {
        let idS = Math.floor(Math.random() * listaNomes.length);
        while (listaSorteados.includes(listaNomes[idS]) || listaNomes[i] == listaNomes[idS]) {
            idS = Math.floor(Math.random() * listaNomes.length);
            }
        resultado.innerHTML += `<p>${listaNomes[i]} --> ${listaNomes[idS]}</p>`;
        listaSorteados.push = listaNomes[idS];
    }
}

Eu realmente não consigo comprieender o porquer desse código não funcionar. O unico problema e que o os nomes estão se repetindo no sorteio, para mim o whille pervine isso, mas por algum motivo isso não esta acontencendo.

Na minha logica esse whille vai continua sorteando o meu idS enquanto o listaNome[idS] estiver incluso da listaSorteados, e se por um acaso o listaNome|idS| não estiver na lista, mas for igual ao listaNome|i| o while vai continuar alterando o idS: então esse whille só deveria parar quando o listaSorteado.includes(listaNomes|idS|) == falso, quer dizer que (não esta incluido), e listaNome|i| == listaNome|idS| == falso, que quer dizer que (não é igual). então quando o whille terminar ele vai me dar o idS que corresponde a uma pessoa da lista que ainda não foi sorteado e que também não é a ''pessoa que está tirando o papel''.

Com certeza eu estou errado em algo, pois o programa esta sortenado a mesma pessoa mais de uma vez. Entretando não consigo ver onde está o erro.

2 respostas
solução!

Bom, passei o dia apanhando desse bendito erro, e assim que publiquei o topico, acabei percebendo o meu erro. e não sei como apagar o tópico, então eu mesmo vou me responder:

O meu erro na verdade estava no "listaSorteados.push = listaNomes|idS|; "por algum motivo escrevir assim e não tinha percebido, o correto seria --> "listaSorteados.push(listaNomes|idS|);"

ai fica outra dúvida, alguem sabe como apagar um tópico?

Oiii Alef, normalmente não é possível.

Nesse caso, precisa entrar em contato via e-mail justificando o porquê. Mas, como sugestão, deixaria o tópico aí e marcaria a resposta como solucionado, pode ser que em algum momento outra pessoa busque um problema parecido e, no final das contas, aqui tem uma solução para esse problema.

E foi bem legal de sua parte trazer a solução após ter encontrato o problema.

Grande abraço