1
resposta

[Projeto] Resolução

Segue minha resolução para esse caso, criei uma variável 'nomeMaiusculo' e atribui a condição . toUpperCase() ao nome capturado no input. (IGNORE AS ANOTAÇÕES NO CÓD rs...)

let amigos = [];

function adicionar () { let amigo = document.getElementById('nome-amigo'); // captura o nome e o campo da lista de amigos

let nomeMaiusculo = amigo.value.toUpperCase(); // transforma todas as letras em maiusculas. 

if (amigo.value == '') { // verifica se está sendo colocado algum valor no input
    alert('Digite um valor válido');
    return;
}

if (amigos.includes(nomeMaiusculo)) { //verifica se o nome digitado no input já está na lista
    alert('Nome ja adicionado!');
    return;
}

let lista = document.getElementById('lista-amigos');

amigos.push(nomeMaiusculo); // leva os elementos capturados para dentro do array e transforma todos os caracteres em letras maiusculas

if (lista.textContent.trim() === '') { // verifica se o textContent da lista está vazio, se sim apenas add o amigo, caso não, add o que já estava + amigo novo + virgula
    lista.textContent = amigo.value    // lembrando, esse .trim tira os espaços vazio antes e depois da string.     
} else {
    lista.textContent = lista.textContent + ', ' + amigo.value;
}

amigo.value = ''; // reseta o valor escrito no input toda vez que clica no botão

}

function sortear () { embaralha(amigos); // chama a function embaralha que já aguarda uma lista (amigos) let sorteio = document.getElementById('lista-sorteio'); //busca o campo dos sorteados

for (let i = 0; i < amigos.length; i++) { // loop for, tendo um contato i = 0, a condição que só para quando o i = amigos.lenght e toda vez ele somará 1 'girada' no contador
    if (i == amigos.length - 1) { //verificar se o loop já chegou no final, se sim, fará que o último elemento do array pegue o primeiro
        sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[0] + '<br>'; // add ao campo de sorteados, o último elemento do array sairá com o primeiro
    } else {
        sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' --> ' + amigos[i + 1] + '<br>'; //faz com o que quando o loop ainda não chegou no final, ele pegue um item do array e traga o próximo
    }
}

}

function embaralha (lista) {

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

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

    [lista[indice - 1], lista[indiceAleatorio]] = 
        [lista[indiceAleatorio], lista[indice - 1]];
}

}

function reiniciar () { amigos = []; document.getElementById('nome-amigo').innerHTML = ''; document.getElementById('lista-amigos').innerHTML = ''; }

1 resposta

Oi, Pedro! Como vai?

Gostei de como você utilizou a função toUpperCase() para padronizar os nomes na lista de amigos.

Essa prática ajuda a evitar duplicidade causada por diferenças de maiúsculas e minúsculas, tornando seu código mais robusto. Além disso, o uso do método trim() para limpar espaços extras é uma boa atenção aos detalhes.

Conte com o apoio do Fórum na sua jornada.

Abraços e bons estudos!