Que tal todos! Estuve buscando una solucion alternativa al ejercicio "Juego Secreto" donde se solucione el problema relacionado con la aparicion del numero cero en las muestras aleatorias. Mi idea es, en vez de resolver esa cuestion dentro del "While" de la funcion "sortearNumeros" hacerlo en la función "aleatorio", y mi solucion quedo asi:
<script>
function aleatorio(){
nroAleatorio = Math.round(Math.random()*10);
if(nroAleatorio != 0){
return nroAleatorio;
}
}
function sortearNumeros(cantidad) {
var secreto = [];
var contador = 1;
while(contador <= cantidad){
var numeroAleatorio = aleatorio();
console.log(secreto);
var encontrado = false;
for(var posicion = 0; posicion < secreto.length; posicion++){
if(numeroAleatorio ==secreto[posicion]){
var encontrado = true;
break;
}
}
if (encontrado == false){
secreto.push(numeroAleatorio);
contador++;
}
}
return secreto
}
var secreto = sortearNumeros(4);
console.log(secreto);
var input = document.querySelector("input");
input.focus();
function verificar() {
var encontrado = false;
for(var posicion = 0; posicion < secreto.length; posicion++){
if(parseInt(input.value) == secreto[posicion]) {
alert("usted acerto");
encontrado = true;
break;
}
}
if(encontrado == false){
alert("usted erró");
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verificar;
</script>
Pero cuando reviso en la herramienta de desarrollador los datos pasados por "console.log" en la linea 25, advierto que al refrescar varias veces el navegador para que seleccione distintas muestas de 4 numeros, si bien en ninguna aparece el 0, hay ocasiones en que aparaece un "undefined" - el resultado del array es:
[
10,
2,
null,
1
]
Les consulto ¿cual es la naturaleza del error?. Y, por otro lado, suponiendo que ese error pueda solucionarse en la version que les compartí ¿es una forma válida de solucionar el problema de la aparicion del 0?¿la consideran eficiente?. Agradeceré cualquier opinion. Saludos!