1
resposta

[Projeto] Projeto amigo secreto

Boa tarde, gostaria de compartilha e pedir opiniões sobre o desafio de amigo secreto.

Estou muito feliz pois foi o primeiro projeto desafio em que eu menos precisei de ajuda do instrutores do curso, o código esta diferente mas esta com todas as funcionalidades que foram pedidas funcionando perfeitamente; único momento em que me confundi mais foi na função de sortear, ainda estou com um pouco de dificuldade em como usar for ()

Segue o código escrito abaixo

let listaAmigo = [];

function adicionar() {
    let nomeAmigo = document.getElementById('nome-amigo');
    if(nomeAmigo.value === ''){
        alert('Digite um nome válido.')
        return;
    }

    if (listaAmigo.includes(' '+ nomeAmigo.value)) {
        alert('Há nomes repetidos na lista, por favor coloque o sobrenome do nome repetido para evitar confusões.');
        return;
    }
    listaAmigo.push(' '+ nomeAmigo.value);
    
    let amigosIncluidos = document.getElementById('lista-amigos');
    amigosIncluidos.textContent = listaAmigo;
    nomeAmigo.value = ('');
    
}


function sortear() {
    embaralha(listaAmigo);
    let sorteio = document.getElementById('lista-sorteio');

    if(listaAmigo.length < 4) {
        alert('Número de participantes insuficientes (Minimo 4)');
        return;
    }
    
    for (let i = 0; i < listaAmigo.length; i++) { 

        if (i == listaAmigo.length - 1) {
            sorteio.innerHTML = sorteio.innerHTML + listaAmigo[i] + '-->' + listaAmigo[0] + '<br>'
        } else {
            sorteio.innerHTML = sorteio.innerHTML + listaAmigo[i] + '-->' + listaAmigo[i + 1] + '<br>'
        }
    }
}


function reiniciar() {
    listaAmigo.length = 0;
    let amigosIncluidos = document.getElementById('lista-amigos');
    amigosIncluidos.textContent = listaAmigo;
    let sorteio = document.getElementById('lista-sorteio');
    sorteio.innerHTML = ('');
    let nomeAmigo = document.getElementById('nome-amigo');
    nomeAmigo.value = ('');
    

}

function embaralha(lista) {

    for (let indice = lista.length; indice; indice--) {

        const indiceAleatorio = Math.floor(Math.random() * indice);

        // atribuição via destructuring
        [lista[indice - 1], lista[indiceAleatorio]] = 
            [lista[indiceAleatorio], lista[indice - 1]];
    }
}
1 resposta

Oi, Vitor! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de ver como você estruturou bem as funções e organizou o fluxo do sorteio. Do jeito que você explicou, a parte do for() foi o ponto que exigiu mais atenção, e isso é normal quando começamos a lidar com listas e iterações.

Uma dica interessante para o futuro é usar o método join() para exibir listas formatadas sem precisar concatenar manualmente. Veja este exemplo:


let nomes = ["Ana", "Joao", "Carlos"];
console.log(nomes.join(", "));

O código usa join() para unir os itens da lista em uma única string separada por virgulas.

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