A resposta sugerida para o exercício permite que o usuário digite um número que não esteja entre 1 e 60 e também permite que números se repitam. Fiz testes e comprovei que ocorre. Fiz umas modificações na resposta. Segue o código.
<meta charset="UTF-8">
<script>
var pulaLinha = function() {
document.write("<br><hr><br>");
}
var mostra = function(frase) {
document.write(frase);
pulaLinha();
};
var quantidadeAcertos = function(jogados, sorteados) {
var acertos = 0;
for(i = 0; i < 6; i++) {
for(j = 0; j < 6; j++) {
if(jogados[i] === sorteados[j]) {
acertos++;
}
}
}
return acertos;
}
var numeroValido = function(numero) {
if (numero >= 1 && numero <= 60) return true;
else return false;
}
var numeroNaoRepetido = function(numero, array) {
for(var i = 0; i < array.length; i++) {
if(array[i] == numero) return false;
}
return true;
}
//programa inicia aqui!!
alert("Jogue na mega-sena! Diga quais são os 6 números do seu jogo.");
var i = 0;
var numerosJogados = [];
while(numerosJogados.length < 6) {
var numero = parseInt(prompt("Diga qual o " + (i + 1) + " número do seu jogo:"));
//verifica se número está entre 1 e 60
if (numeroValido(numero) == false) {
alert("Número jogado deve estar entre 1 e 60. Jogue outro!")
continue;
}
//verifica se o número é repetido
if (numeroNaoRepetido(numero, numerosJogados) == false ) {
alert("Já jogou esse número. Jogue outro!");
continue;
}
//insere no array
numerosJogados.push(numero);
i++;
}
alert("Muito bom! Agora vou sortear os números premiados. Clique em ok para eu fazer o sorteio.");
var numerosSorteados = [];
while(numerosSorteados.length < 6) {
var numero = Math.round( Math.random() * 60 );
//verifica se o número é repetido
if (numeroNaoRepetido(numero, numerosSorteados) == false ) continue;
//insere no array
numerosSorteados.push(numero);
}
var acertos = quantidadeAcertos(numerosJogados, numerosSorteados);
mostra("Você jogou os números " + numerosJogados);
mostra("Os números sorteados foram " + numerosSorteados);
mostra("Você acertou " + acertos + " número(s)");
</script>