app.js
let listaAmigos = [];
let foiSorteado = false;
function adicionar()
{
if (foiSorteado)
{
alert('Clique em reiniciar primeiro.');
return;
}
else if (validarEntrada(document.getElementById('nome-amigo')))
{
alert('O campo nome não foi preenchido ou é inválido.');
return;
}
else if (listaAmigos.includes(document.getElementById('nome-amigo').value))
{
alert('O nome inserido já foi adicionado anteriormente.');
return;
}
else
{
listaAmigos.push(document.getElementById('nome-amigo').value);
document.getElementById('lista-amigos').textContent = listarAmigosIncluidos(listaAmigos);
document.getElementById('nome-amigo').value = '';
}
}
function sortear()
{
if (foiSorteado)
{
alert('Clique em reiniciar primeiro.');
return;
}
else if (listaAmigos.length < 4)
{
alert('É necessário adicionar quatro ou mais amigos para sortear.');
return;
}
else if(listaAmigos.length % 2 == 1 && !confirm('A quantidade de amigos é ímpar!\nDeseja continuar mesmo assim?'))
{
return;
}
else
{
sortearPares(listaAmigos);
listaAmigos = [];
foiSorteado = true;
}
}
function reiniciar()
{
listaAmigos = [];
document.getElementById('lista-amigos').textContent = '';
document.getElementById('nome-amigo').value = '';
document.getElementById('lista-sorteio').textContent = '';
foiSorteado = false;
}
function validarEntrada(entrada)
{
return entrada.value.match(/[^a-z]/gi) || '' == entrada.value;
}
function checarVirgula(listaAmigos, amigo)
{
if ((listaAmigos.findLast((elemento) => 'undefined' !== typeof elemento) == amigo))
{
return `${amigo.charAt(0).toUpperCase() + amigo.slice(1)}.`;
}
else if ('undefined' !== typeof amigo)
{
return `${amigo.charAt(0).toUpperCase() + amigo.slice(1)}, `;
}
else
{
console.log('Nome indefinido.');
return;
}
}
function listarAmigosIncluidos(listaAmigos)
{
let amigosIncluidos = '';
for (const amigo of listaAmigos.values())
{
amigosIncluidos += checarVirgula(listaAmigos, amigo);
}
return amigosIncluidos;
}
function sortearIndice(tamanho)
{
return parseInt(Math.random() * (tamanho - 2));
}
function listarSorteio(sorteador, sorteado)
{
document.getElementById('lista-sorteio').textContent += `${sorteador.charAt(0).toUpperCase() + sorteador.slice(1)} ➜ ${sorteado.charAt(0).toUpperCase() + sorteado.slice(1)}\n`;
}
function sortearPares(listaAmigos)
{
while (listaAmigos.length > 0)
{
let indice = sortearIndice(listaAmigos.length);
if (listaAmigos.length == 1)
{
alert(`${listaAmigos[0].charAt(0).toUpperCase() + listaAmigos[0].slice(1)} ficou de fora.`);
return;
}
listarSorteio(listaAmigos[listaAmigos.length -1], listaAmigos[indice]);
listaAmigos.pop();
listaAmigos.splice(indice,1);
}
}