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

[Dúvida] Porque o nome esta aparecendo repetido?

let amigos = [];
//Começa com a variavel lista de amigos
function adicionar () {
    let amigo = document.getElementById ('nome-amigo');
    let lista = document.getElementById ('lista-amigos');
    amigos.push(amigo.value)//para chamar o array
    lista.textContent = amigo.value;
    //adicionar uma condicional

    if (lista.textContent == ''){ //quando vazio adicionar
      lista.textContent = amigo.value;  
    } else {
        lista.textContent = lista.textContent + ', ' + amigo.value; // quando ja contem, adicionar e colocar entre virgulas 
    }
    amigo.value = ''; //depois que adiconar, limpar o campo  
}
//Executar os botoes 
function sortear() {
    embaralha(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 embaralha(lista) { // funçao pronta de Fisher–Yates

    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
solução!

Oii, Tiago!

O problema do nome aparecer repetido tá na forma como você tá atualizando o conteúdo da lista de amigos. No trecho onde você define lista.textContent, você está sobrescrevendo o valor ao invés de acumulá-lo.

  • Acumulando os nomes corretamente: No trecho onde você atualiza lista.textContent, você deve garantir que tá adicionando o novo nome à lista já existente, ao invés de sobrescrever.

  • Atualização correta do textContent: Veja como você pode ajustar o código:

function adicionar() {
    let amigo = document.getElementById('nome-amigo');
    let lista = document.getElementById('lista-amigos');
    amigos.push(amigo.value); // Adiciona o novo amigo ao array

    if (lista.textContent === '') {
        lista.textContent = amigo.value;  
    } else {
        lista.textContent += ', ' + amigo.value; // Usa o operador += para acumular
    }
    amigo.value = ''; // Limpa o campo de entrada
}

Com essa modificação, o operador += é usado para adicionar o novo nome à lista já existente, mantendo os nomes anteriores e adicionando o novo separado por uma vírgula.

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