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

Função return, não funciona

Alguem pode me explicar porque o return, da função "sorteiaNumeros" não está funcionando?

<meta charset = "UTF8">

<input/>
<button> Que começe a zoeira! </button>

<script>
    var input = document.querySelector ("input"); // Pega o input do "mundo html"
    input.focus();
    var button = document.querySelector ("button"); // Pega o button do "mundo html"

    function sorteia (){ // sorteia um numero de 0 a 10.

        return Math.round(Math.random() * 10);
    }

    function sorteiaNumeros(quantidade){ // Sorteia uma quantidade de numeros para uma Array.

        var numeroPensado = [];
       // numeroPensado.length = quantidade;

        var contador = 1 ;


        while ( contador <= quantidade ){   

            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0){

                var repete = false;

                for (var posicao = 0; posicao < numeroPensado.length; posicao++){

                    if (numeroPensado[posicao] == numeroAleatorio ){
                        repete = true
                        break;
                    }
                }
                if (repete = false){
                numeroPensado.push(sorteia())
                contador++;
                 }

            }
        }
    }



        return numeroPensado; 
    }


    var numeroPensado = sorteiaNumeros(5);

    console.log(numeroPensado)


    function verifica (){ // faz a verificação se o numero digitado foi o correto!.
        var acertou = false
        for (var numeroPosicao = 0; numeroPosicao < numeroPensado.length; numeroPosicao++){
            if (numeroPensado[numeroPosicao] == input.value){
                acertou = true;
                alert (" VOCÊ ACERTOU!!");
            } 
        }   
        if (acertou == false ){
            alert ("VOCÊ ERROU!!")
        }
    }
    button.onclick = verifica;



</script>
4 respostas

O return está no local errado. Tem uma chave a mais. O return deve ficar dentro da chave que fecha a função.

Realmente Gabriel, tava tão preocupado com as linhas acima do código que não vi, que tinha uma chave a mais nele.

Mas agora o código está com problema de loop. simplesmente fica gerando alguma coisa infinitamente. ( trava o navegador até)

fiz 2 alterações no codigo pra ter certeza que o problema não era com ele.

1º eu troquei a função for( a;b;c) pelo while

function sorteiaNumeros(quantidade){ // Sorteia uma quantidade de numeros para uma Array.

        var numeroPensado = [];
       // numeroPensado.length = quantidade;

        var contador = 1 ;


        while ( contador <= quantidade ){   

            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0){

                var repete = false;
                var posicao = 0

                while ( posicao < numeroPensado.length){

                    if (numeroPensado[posicao] == numeroAleatorio ){
                        repete = true
                        break;
                    }
                posicao++
                } 
                if (repete = false){
                numeroPensado.push(sorteia())
                contador++;
                }

            }
        }
        return numeroPensado; 
    }


sorteiaNumeros(3);

2º Eu voltei pro original

function sorteiaNumeros(quantidade){ // Sorteia uma quantidade de numeros para uma Array.

        var numeroPensado = [];
       // numeroPensado.length = quantidade;

        var contador = 1 ;


        while ( contador <= quantidade ){   

            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0){

                var repete = false;

                for (var posicao = 0; posicao < numeroPensado.length; posicao++){

                    if (numeroPensado[posicao] == numeroAleatorio ){
                        repete = true
                        break;
                    }
                }
                if (repete = false){
                numeroPensado.push(sorteia())
                contador++;
                }

            }
        }
        return numeroPensado; 
    }

Eu concluí o curso hoje, e esse ta sendo o exercio aonde eu to tendo mais dificuldade.

solução!
if (repete = false){
                numeroPensado.push(sorteia())
                contador++;
 }

Esqueceu de um "=" no if ;D

Putz, verdade. acho que eu estou olhando pros lugares errados do códigos. eu achava q fosse erro na formula, ou outra coisa fora dos parenteses, conchete e chave.

Muito obrigado Gabriel, eu n ia começar outro curso enquanto eu não tivesse a solução pra esse erro. vc me ajudou D+. Ta perfeito agora maldito "=" mal pude ver seus movimentos. kkkkkkk