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

[Projeto] Minha solução para o sorteio

Olá. eu fiz uma solução diferente dos instruturos para o sorteio. Primeiro, em vez de um, crie dois arrays. Um para colocar o nome de quem vai sortear, e outro de quem será sorteado. Ambos receberão as informações dadas no input do id nome-amigo. No sortear, criei a variavel repeticao, para que o loop repita a quantidade igual ao tamanho inicial das listas. Criei tbm as variaveis sorteador e sorteado que receberão o nome do amigos das listas de acordo com o sorteio feito pelo Math.floor(Math.random() * array). E quando é escolhido o sorteador e sorteado, os nomes são removidos de suas respectivas listas com o .splice()

document.getElementById("nome-amigo").focus();

var arrayNomesSorteadores = [];
var arrayNomesSorteados = [];

function adicionar(){
    var nomeAmigo = document.getElementById("nome-amigo").value;
    var listaAmigos = document.getElementById("lista-amigos");
    
    if(nomeAmigo == ""){
        alert("Preencha o campo do nome corretamente!");
    } else{
        arrayNomesSorteadores.push(nomeAmigo);
        arrayNomesSorteados.push(nomeAmigo);

        if(listaAmigos.textContent == ''){
            listaAmigos.textContent = nomeAmigo;
        } else{
            listaAmigos.textContent = listaAmigos.textContent + ", " + nomeAmigo;
        }
    }

    document.getElementById("nome-amigo").value = "";
    document.getElementById("nome-amigo").focus();
}

function sortear(){
    var listaSorteio = document.getElementById("lista-sorteio");
    var sorteador;
    var sorteado;
    var repeticao = arrayNomesSorteadores.length;
    for (i = 0; i < repeticao; i++) {
        var sorteador = arrayNomesSorteadores[Math.floor(Math.random() * arrayNomesSorteadores.length)];
        arrayNomesSorteadores.splice(arrayNomesSorteadores.indexOf(sorteador), 1);
    
        var sorteado = arrayNomesSorteados[Math.floor(Math.random() * arrayNomesSorteados.length)];
        while (sorteado == sorteador) {
            sorteado = arrayNomesSorteados[Math.floor(Math.random() * arrayNomesSorteados.length)];
        }
        arrayNomesSorteados.splice(arrayNomesSorteados.indexOf(sorteado), 1);
        
        if(listaSorteio.innerHTML == ""){
            listaSorteio.innerHTML = `${sorteador} → ${sorteado} <br>`
        } else{
            listaSorteio.innerHTML += `${sorteador} → ${sorteado} <br>`;
        }
    }
}
1 resposta
solução!

Oi, Nickolas! Tudo bem?

Solução super válida, que mostra que você entendeu bem o problema e conseguiu criar uma solução alternativa. Isso é uma habilidade muito importante em programação, pois muitas vezes existem várias soluções possíveis para um problema e é importante ser capaz de pensar em diferentes abordagens, parabéns!

Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!