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

[Sugestão] esboço/Apresentação do projeto Amigo Secreto

let lista = [];

// Adicionar amigos à lista function adicionar() { let nomeAmigo = document.getElementById('nome-amigo').value.trim(); if (nomeAmigo === "") { alert("Por favor, insira um nome válido."); return; } lista.push(nomeAmigo); document.getElementById('lista-amigos').innerHTML = lista.join(", "); document.getElementById('nome-amigo').value = ""; // Limpa o campo de entrada }

// Realizar o sorteio function sortear() { if (lista.length < 2) { alert("Adicione pelo menos 2 amigos antes de realizar o sorteio."); return; }

let resultado = [];
let listaSorteados = [...lista]; // Copiar a lista para sorteio

for (let i = 0; i < lista.length; i++) {
    let indice = Math.floor(Math.random() * listaSorteados.length);

    // Garantir que ninguém se sorteie
    while (lista[i] === listaSorteados[indice]) {
        indice = Math.floor(Math.random() * listaSorteados.length);
    }

    resultado.push(`${lista[i]} -> ${listaSorteados[indice]}`);
    listaSorteados.splice(indice, 1); // Remove o sorteado da lista
}

document.getElementById('lista-sorteio').innerHTML = resultado.join("<br>");

}

// Reiniciar a lista function reiniciar() { lista = []; document.getElementById('nome-amigo').value = " "; document.getElementById('lista-amigos').innerHTML = " "; document.getElementById('lista-sorteio').innerHTML = " "; }

2 respostas

Oi Jean,

Excelente iniciativa em compartilhar seu projeto do amigo secreto! 👍

Seu código está bem estruturado e fácil de entender.

Gostei da forma como você implementou a lógica do sorteio, garantindo que ninguém tire a si mesmo. 💪

Uma pequena sugestão seria adicionar uma verificação para evitar nomes duplicados na lista, o que poderia gerar confusão no sorteio.

Você pode usar um método includes() para verificar se o nome já existe antes de adicioná-lo. 🔍

function adicionar() {
  let nomeAmigo = document.getElementById('nome-amigo').value.trim();
  if (nomeAmigo === "") {
    alert("Por favor, insira um nome válido.");
    return;
  }
  if (lista.includes(nomeAmigo)) {
    alert("Este nome já foi adicionado.");
    return;
  }
  lista.push(nomeAmigo);
  document.getElementById('lista-amigos').innerHTML = lista.join(", ");
  document.getElementById('nome-amigo').value = "";
}

Para saber mais: Documentação do método includes() em JavaScript.

Continue praticando e explorando novas funcionalidades! 💻

solução!

Pior que o código está realmente bugado, mesmo com a condicional já adicionada o site trava e fecha quando adicionado 2 nomes iguais usei o .toUpperCase() para resolver tal problema, pq o join(", ") estava sendo considerado para a condicional, haha...

// Adicionar amigos à lista function adicionar() { let nomeAmigo = document.getElementById('nome-amigo').value.trim().toUpperCase(); if (nomeAmigo === "") { alert("Por favor, insira um nome válido."); return; } if (nomeAmigo.length > 15) { alert("O nome é muito longo. Por favor, abrevie."); return; } if (lista.includes(nomeAmigo)) { alert("Este nome já foi adicionado."); return; }

lista.push(nomeAmigo);
document.getElementById('lista-amigos').innerHTML = lista.join(", ");
document.getElementById('nome-amigo').value = ""; // Limpa o campo de entrada

}