Eu terminei de escrever o código do projeto Amigo secreto. Está tudo certo. Porem os nomes sorteados, algumas vezes se repetem, e mesmo quando toda a lista termina, ele continua "sorteando". Tentei colocar "Array".filter(amigo => !"Array".includes(amigo)); também tentei usar o mesmo conceito do exercício dos números aleatórios if (quantidadeDeElementosNaLista == numeroLimite) { listaDeNumerosSorteados = []; } if (listaDeNumerosSorteados.includes(numeroEscolhido)) e também não deu certo.
Alguém pode me ajudar? Eu agradeço. Pois, eu estou quebrando a cabeça...o tempo passando. Segue abaixo o código que eu escrevi:
//O principal objetivo deste desafio é fortalecer suas habilidades em lógica de programação. Aqui você deverá desenvolver a lógica para resolver o problema. let listaDeAmigos = []; // Criar um local de armazenagem, uma Array para armazenar os nomes dos amigos. function adicionarAmigo() { // Cria uma função para adicionar um amigo à lista. const inputAmigo = document.getElementById("amigo"); const nomeAmigo = capitalizeFirstLetter(inputAmigo.value.trim());
// Verificar se o campo nome está vazio, e envia mensagem. const regex = /^[A-Za-zÀ]/; // Exige que o nome começe com uma letra, e mesmmo que digitar a 1° letra minúscula e vai se tornar maiúscula. if (!regex.test(nomeAmigo)) { // Avalaia se o nome começa com uma letra. inputAmigo.value = ""; // Limpa o campo para o usuário inserir outro nome. alert("Por favor, insira um nome válido."); // Após clicar no "ok" na mensagem, ela se apaga e volta ao campo onde se inclui o nome, com o campo vazio. return; // Sai da função. }
// Verifica se o campo onde se inclui um nome está vazio, caso esteja e o usuário clicou para inserir, enia menságem. if (nomeAmigo === "") { alert("Por favor, insira um nome válido.");// Após clicar no "ok" na mensagem, ela se apaga e volta para o campo onde se inclui o nome. return; // Sai da função. }
if (listaDeAmigos.includes(nomeAmigo)) { // Verifica se o nome é repetido, se já consta na lista de nomes inclusos.
alert(O nome '${nomeAmigo}' já está na lista!
); // Após clicar no "ok" na mensagem, ela se apaga e volta ao campo onde se inclui o nome, com o campo vazio.
inputAmigo.value = ""; // Limpa o campo para o usuário inserir outro nome.
return; // Sai da função para não adicionar o nome repetido.
}
listaDeAmigos.push(nomeAmigo); atualizarListaDeAmigos(); inputAmigo.value = ""; }
function atualizarListaDeAmigos() { // Função para atualizar a lista de amigos que é exibida na página. const listaAmigosElement = document.getElementById("listaAmigos"); listaAmigosElement.innerHTML = "";
listaDeAmigos.forEach((amigo, index) => { const li = document.createElement("li"); li.textContent = amigo; listaAmigosElement.appendChild(li); }); }
// Função para (pegar) capitalizar a primeira letra de uma string function capitalizeFirstLetter(string) { return string.charAt(0).toUpperCase() + string.slice(1); }
// Função para sortear um amigo secreto function sortearAmigo() { let mensagemElement = document.getElementById("mensagem");
const indiceSorteado = Math.floor(Math.random() * listaDeAmigos.length); const amigoSorteado = listaDeAmigos[indiceSorteado];
// Comando para Ocultar a lista de amigos const listaAmigosElement = document.getElementById("listaAmigos"); listaAmigosElement.style.display = "none";
// Comando para exibir o resultado do sorteio
const resultadoElement = document.getElementById("resultado");
resultadoElement.innerHTML = <li>O amigo secreto sorteado é: ${amigoSorteado}</li>
;
}
// Adicionar evento de input para (pegar) capitalizar a primeira letra enquanto o usuário digita. document.getElementById("amigo").addEventListener("input", function (event) { const input = event.target; input.value = capitalizeFirstLetter(input.value); });
// Adicionar evento de keydown para adicionar amigo ao pressionar Enter document.getElementById("amigo").addEventListener("keydown", function (event) { if (event.key === "Enter") { adicionarAmigo(); } });