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.