Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Lógica Sorteio

Segue Abaixo minha lógica: Aceito outras soluções para estudar.

let amigos = [];

function adicionar() {
    let nome = document.getElementById("nome-amigo").value;
    let listaAmigos = document.getElementById("lista-amigos");
    amigos.push(nome);

    if (listaAmigos.textContent == "") {
        listaAmigos.textContent = nome
    } else {
        listaAmigos.textContent = listaAmigos.textContent + ", " + nome
    }
    nome = document.getElementById("nome-amigo").value = "";
}

function sortear() {
    embaralha(amigos);
    let sorteio = document.getElementById("lista-sorteio");

    for(let i = 0; i < amigos.length; i++) {
        sorteio.innerHTML += `<li>${amigos[i]} --> ${amigos[(i + 1) % amigos.length]}</li>`;
    }
}

function embaralha(lista) {
    for (let i = lista.lenght; i; i--) {
        const indexAleatorio = Math.floor(Math.random() * i);

        [lista[i - 1], lista[indexAleatorio]] = 
            [lista[indexAleatorio], lista[i - 1]];
    }
}
1 resposta
solução!

Olá Patrick! Como vai?

Seu código para o sorteio de amigos está quase lá, mas há alguns pequenos ajustes que podem ser feitos para garantir que tudo funcione corretamente.

  1. Erro de digitação: No método embaralha, há um pequeno erro de digitação. A propriedade correta para obter o tamanho da lista é length, e não lenght. Isso pode causar problemas ao tentar embaralhar a lista.

  2. Limpar a lista de sorteio: No método sortear, antes de começar a adicionar os pares sorteados, seria uma boa prática limpar o conteúdo anterior da lista de sorteio para evitar que os resultados se acumulem a cada novo sorteio. Você pode fazer isso com sorteio.innerHTML = ""; logo no início da função.

  3. Adicionar verificação de entrada: Seria interessante adicionar uma verificação para garantir que o nome inserido não esteja vazio antes de adicioná-lo à lista de amigos. Isso ajuda a evitar entradas indesejadas.

Aqui está como seu código poderia ficar com essas alterações:

let amigos = [];

function adicionar() {
    let nome = document.getElementById("nome-amigo").value;
    let listaAmigos = document.getElementById("lista-amigos");

    if (nome.trim() !== "") {
        amigos.push(nome);

        if (listaAmigos.textContent == "") {
            listaAmigos.textContent = nome;
        } else {
            listaAmigos.textContent += ", " + nome;
        }
    }
    document.getElementById("nome-amigo").value = "";
}

function sortear() {
    embaralha(amigos);
    let sorteio = document.getElementById("lista-sorteio");
    sorteio.innerHTML = "";  // Limpa a lista de sorteio antes de adicionar novos resultados

    for (let i = 0; i < amigos.length; i++) {
        sorteio.innerHTML += `<li>${amigos[i]} --> ${amigos[(i + 1) % amigos.length]}</li>`;
    }
}

function embaralha(lista) {
    for (let i = lista.length; i; i--) {
        const indexAleatorio = Math.floor(Math.random() * i);

        [lista[i - 1], lista[indexAleatorio]] = 
            [lista[indexAleatorio], lista[i - 1]];
    }
}

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.