Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Nomes não estão aparecendo

let amigos = [];

function adicionar() {
   let amigo = document.getElementById('nome-amigo');
   let lista = document.getElementById('lista-amigos');
   amigos.push(amigos.value);
   if (lista.textContent == '') {
    lista.textContent = amigo.value;
   } else {
    lista.textContent = lista.textContent + ', ' + amigo.value;
   }
    amigo.value = '';
}

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) {

    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]];
    }
}

Está aparecendo ''undefined --> undefined" em todos

2 respostas
solução!

Oii Victor, tudo bem?

Isso tá acontecendo porque há um pequeno erro na sua função adicionar(). Na linha onde você tenta adicionar um novo amigo ao array amigos:

amigos.push(amigos.value);

Você tá tentando adicionar o valor de amigos, que é um array, e não o valor do campo de entrada do amigo. O correto seria adicionar o valor do campo de entrada, que você já recuperou na variável amigo. Então, o correto seria:

amigos.push(amigo.value);

O código da sua função adicionar() corrigido ficaria assim:

function adicionar() {
   let amigo = document.getElementById('nome-amigo');
   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 = '';
}

Com essa correção, dá certinho, veja:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Espero ter ajudado.

Um abraço e bons estudos.

Muito obrigado pela ajuda!