Cuando pruebo en la consola los elementos del array se me repiten igual.
<meta charset="UTF-8">
<input/>
<button>Verificar si acertó con el secreto</button>
<script>
function aleatorio() {
return Math.round(Math.random()*10);
}
function sortearNumeros(cantidad) {
var secreto = [];
var contador = 1;
while (contador <= cantidad) {
var numeroAleatorio = aleatorio();
console.log(numeroAleatorio)
var encontrado = false;
for (var posicion = 0; posicion < secreto.lenght; posicion++) { //para que no se repitan los números en los arrays
if (numeroAleatorio == secreto[posicion]) {
encontrado = true;
break;
}
}
if (encontrado == false) {
secreto.push(numeroAleatorio);
contador++;
}
}
return secreto
}
var secreto = sortearNumeros(4); //arrays
console.log(secreto)
var input = document.querySelector("input"); // El input de html deja un espacio en la pantalla para que el usuario escriba un número ---> El document.querySelector es un comunicador entre html y js
input.focus(); //para no tener necesidad de poner el cursor yo
function verificar() {
var encontrado = false;
for(var posicion = 0; posicion < secreto.length; posicion++) { //(declaración de la variable; condición;sumarizador de la variable). El .lenght sirve para decir los elementos que tiene el array, si quiero agregar elementos dentro de [] no tengo que modificarlo manualmente.
if (parseInt(input.value) == secreto[posicion]) {
alert("Usted acertó");
encontrado = true;
break; //cuando entre al primer valor correcto ya no necesita verificar los otros valores
}
}
if (encontrado == false) {
alert("Usted erró");
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verificar; //no le pongo los parentesis para que no ejecute el verificar de entrada sino que lo ejecute cuando haga click en el botón.
</script>