Segue o código:
let amigos = ['a','b','c','d'];
let sorteados = [];
let campo = document.getElementById('lista-sorteio');
let listaAmigos = document.getElementById('lista-amigos');
// desbloquear botão
let botoes = document.querySelectorAll('button.primary, button.secondary');
for (let botao of botoes) {
botao.disabled = false;
}
// adicionar amigo
function adicionar() {
let amigo = primeiraMaiuscula(document.getElementById('nome-amigo').value);
if (isNaN(amigo)) {
if (amigos.includes(amigo)) {
alert('Este amigo já está na lista')
} else {
amigos.push(amigo);
console.log(amigo);
if (amigos.length == 1) {
listaAmigos.textContent += amigo;
} else {
listaAmigos.textContent += " - " + amigo;
}
}
} else {
alert('Você precisa digitar o nome de um amigo')
}
limparCampo();
}
// limpar entrada de nomes
function limparCampo() {
document.getElementById('nome-amigo').value = "";
}
// função para deixar apenas a primeira letra maiúscula
function primeiraMaiuscula(str) {
return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}
// reiniciar sorteio
function reiniciar() {
amigos = [];
sorteados = [];
document.getElementById('lista-amigos').textContent = "";
campo.innerHTML = `<p id="lista-sorteio"></p>`
// desbloquear botão
for (let botao of botoes) {
botao.disabled = false;
botao.classList.remove('gray');
}
}
function sortear() {
let numero;
let i = 1;
if (amigos.length > 3) {
// bloquear botões
for (let botao of botoes) {
botao.disabled = true;
botao.classList.add('gray');
}
//lógica do sorteio baseada em duas listas cujos indices determinam quem tirou quem
numero = Math.floor(Math.random() * (amigos.length - 0));
while (amigos[numero] == amigos[0]) {
numero = Math.floor(Math.random() * (amigos.length - 0));
}
sorteados.push(amigos[numero]);
while (sorteados.length < amigos.length) {
if (amigos[numero] == amigos[i] || sorteados.includes(amigos[numero])) {
numero = Math.floor(Math.random() * (amigos.length - 0));
} else {
sorteados.push(amigos[numero]);
console.log(`Amigos: ${amigos}`);
console.log(`Sorteados: ${sorteados}`);
i++
}
}
for (let j = 0; j < amigos.length; j++) {
campo.innerHTML += `<p id="lista-sorteio">${amigos[j]} -> ${sorteados[j]}</p>`;
}
} else {
// obs 3 amigos ainda tem a possibilidade de alguém sobrar: A->B B->A C->C; por isso optei por 4
alert("Cadastre pelo menos 4 amigos.");
}
}
A pergunta que faço é se não está muito na base da gambiarra porque ainda não vi a resolução na aula. E aÍ, o que acham?