1
resposta

[Dúvida] Meu sorteio não estava funcionando aí fiz o seguinte

for(let i = 0; i < amigos.length; i++){
        
        if(i == amigos.length - 1){
            sorteio.innerHTML = sorteio.innerHTML + amigos[i] + ' >>>>' + amigos[i - amigos.length + 1] + '<br>'

Não conseguia achar o erro fiz essa gambiarra , funcionou mas me pareceu redundante .

abaixo meu código completo


let amigos = [];

function adicionar(){
    let amigo = document.getElementById('nome-amigo');
    if (amigo.value == '') {
        alert('informe um nome valido!');
        return;     
    } 
  //Na linha de baixo eestamos usando a tag .includes que basicamente ve se o valor já esta incluido na lista ou array
  //Colocamos o amigos.value para mostrar em que parametro queremos essa comparação .value no caso pq é um texto
    if (amigos.includes(amigo.value)) {        
        alert('Nome já adicionado!');
        amigo.value = ('');
        return;     
    } 
    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 = '';
}

function sortear (){
    if ( amigos.length < 4 ) {
        alert('Adicione no minimo 4 participantes');
        return;        
    }

    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[i - amigos.length + 1] + '<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]];
    }
}

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

1 resposta

Olá, Yuri! Tudo bem?

A gambiarra de início nos ajuda melhorar o nosso conhecimento e enfrentar desafios, alguns casos são as nossas únicas opções :). Mas por experiência própria, tente se manter longe delas, pois os problemas que elas geram no futuro é bem pior. Porém, no seu caso não foi uma gambiarra tão "grande", achei valido.

No mais, caso tenha problemas ou dúvidas, saiba que pode contar com a comunidade do fórum da Alura e seus monitores.

Abraços e bons estudos!