1
resposta

Solução para amigos secretos

// app.js
let amigos = []; // array vazia para armazenar os nomes dos amigos

// Função para adicionar amigo na array
function adicionar() {
    const input = document.getElementById('nome-amigo');
    const nome = input.value.trim();

    if (nome === '') {
        alert('Digite um nome válido.');
        return;
    }

    if (amigos.includes(nome)) {
        alert('Este amigo já foi adicionado.');
        return;
    }

    amigos.push(nome);
    input.value = '';
    atualizarLista();
}

// Atualiza a lista de amigos ja incluido
function atualizarLista() {
    const listaAmigos = document.getElementById('lista-amigos');
    listaAmigos.innerHTML = amigos.join('<br>');
}

// Função para sortear amigo secreto de maneira aleatoria com o forEach (lambda) e a função Match.random
function sortear() {
    if (amigos.length < 4) {
        alert('Adicione pelo menos 4 amigos para sortear.');
        return;
    }

    const sorteio = [];
    const amigosDisponiveis = [...amigos];

    amigos.forEach(amigo => {
        let index;
        do {
            index = Math.floor(Math.random() * amigosDisponiveis.length);
        } while (amigosDisponiveis[index] === amigo && amigosDisponiveis.length > 1);

        sorteio.push(`${amigo} → ${amigosDisponiveis[index]}`);
        amigosDisponiveis.splice(index, 1);
    });

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

// Reinicia o sistema
function reiniciar() {
    amigos = [];
    atualizarLista();
    document.getElementById('lista-sorteio').innerHTML = '';
}

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá, Paulo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de arrays e manipulação de DOM para controlar a lista de amigos, utilizou muito bem o método .forEach() com lógica de sorteio aleatório para distribuir os pares de forma dinâmica e ainda compreendeu a importância do uso de validações com includes() e trim() para garantir a integridade dos dados inseridos.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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