1
resposta

[Projeto] Projeto final

let amigos = [];
let participantes = 4;//Criado para manutenção do código
//adiciona o nome do amigo
function adicionar() {
    let amigo = document.getElementById('nome-amigo');
    //Checa o preenchimento do campo
    if(amigo.value.trim() == ''){
        alert("Digite o nome do amigo");
        return;//Impede a conclusão da função
    }

    if(amigo.includes == amigo.value){
        alert("nome já adicionado");
        return;//Impede a conclusão da função
    }

    let lista = document.getElementById('lista-amigos');


    amigos.push(amigo.value);


    if (lista.textContent == '') {
        lista.textContent = amigo.value;
    } else {
        lista.textContent = lista.textContent + ', ' + amigo.value;
    }


    amigo.value = '';


    atualizarLista();
    atualizarSorteio();
}

function sortear() {
    if (amigos.length < participantes){
        alert(`Necessario ${participantes} pessoas`);
        return;
    }
    embaralhar(amigos);
    let sorteio = document.getElementById('lista-sorteio');
    for (let i = 0; i < amigos.length; i++) {
        if (i == amigos.length - 1) {
            sorteio.innerHTML = sorteio.innerHTML + amigos[i] +' --> ' +amigos[0] + '<br/>';
        } else {
            sorteio.innerHTML = sorteio.innerHTML + amigos[i] +' --> ' +amigos[i + 1] + '<br/>';
        }
    }
}


function excluirAmigo(index) {
    amigos.splice(index, 1);
    atualizarLista();
    atualizarSorteio();
}


function embaralhar(lista) {
    for (let indice = lista.length; indice; indice--) {
        const indiceAleatorio = Math.floor(Math.random() * indice);
        [lista[indice - 1], lista[indiceAleatorio]] = [lista[indiceAleatorio], lista[indice - 1]];
    }
}


function atualizarSorteio() {
    let sorteio = document.getElementById('lista-sorteio');
    sorteio.innerHTML = '';
    //sortear(); - Se habilitar gerará erro, mensagens de alerta serão ativas e doi sorteios serão feitos
    }


function atualizarLista() {
    let lista = document.getElementById('lista-amigos');
    lista.innerHTML = '';


    for (let i = 0; i < amigos.length; i++) {
        // Cria um elemento de parágrafo para cada amigo
        let paragrafo = document.createElement('p');
        paragrafo.textContent = amigos[i];
       
        // Adiciona um evento de clique para excluir o amigo
        paragrafo.addEventListener('click', function() {
            excluirAmigo(i);
        });


        // Adiciona o parágrafo à lista
        lista.appendChild(paragrafo);
    }
}


function reiniciar() {
    amigos = [];
    document.getElementById('lista-amigos').innerHTML = '';
    document.getElementById('lista-sorteio').innerHTML = '';
}
1 resposta

Oi, Ivan! Como vai?

Você estruturou bem a lógica de sorteio, com separação clara das funções. Um ponto que chama atenção é a tentativa de evitar nomes duplicados, o que mostra preocupação com a integridade dos dados. Mas no trecho if(amigo.includes == amigo.value) há um problema: includes é um método e deve ser usado com parênteses no array amigos.

Uma dica interessante para o futuro é usar o método includes da forma correta para verificar se o nome já existe:


if (amigos.includes(amigo.value)) {
    alert("nome ja adicionado");
    return;
}

Esse código verifica se o nome digitado já está na lista amigos antes de adicioná-lo, evitando repetições.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!