<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demostración de "if" en JS</title>
</head>
<body>
<div>
<input type="text" id="input1" placeholder="Escribe algo">
<button onclick="checkInput('input1')">Check</button>
<p id="result1"></p>
</div>
<div>
<input type="text" id="input2" placeholder="Escribe algo">
<button onclick="refreshPage('input2')">Refresh</button>
<p id="result2"></p>
</div>
<script>
function getRandomNumber() {
return Math.floor(Math.random() * 3) + 1;
}
console.log(getRandomNumber());
// Math.random() genera un número entre 0 y 1 (sin incluir 1).
// Multiplicamos por 3 para obtener un número entre 0 y 2.9999....
// Math.floor() redondea hacia abajo, resultando en un número entero entre 0 y 2.
// Sumamos 1 para desplazar el rango, obteniendo valores entre 1 y 3.
function getRandomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomNumber(1, 3));
function omplirArray(mida, max){
var array= [];
for (var x=0; x<mida; x++){
array.push(Math.floor(Math.random()*max)+ 1);
}
return array;
}
function comprovarJugada(a, b) {
a.sort();
b.sort();
for (var i = 0; i < a.length; i++) {
if (a[i] !== b[i]) {
return false; // Si algún elemento es diferente, los arrays no son iguales
}
}
return true; // Si pasó todas las comparaciones, los arrays son iguales
}
El bucle for va bien para recorrer arrays o hacer cosas que tengan un determinado número de vueltas, por ejemplo sumar los números pares del 1 al 100
Una de las cosas con que nos encontramos al usar el bucle While es que, a diferencia del for, podemos hacer un bucle infinito por error con cierta facilidad:
sortir = false;
while(!sortir){
console.log("portes: " + encerts++);
}
if (encerts>10000) sortir = true;
sortir = false; //1.-Inicialitzo la condició (pot haver-hi més d'una) de sortida
encerts = 0; //2.-Inicialitzo les variables que faran càlculs dins el bucle
while(!sortir){
console.log("portes: " + encerts++);
if (encerts>10000) sortir = true; //3.-Un "if" en el que haurà d'entrar almenys una vegada
}
El bucle While se ha de utilizar cuando no sabemos, de entrada, el número de repeticiones que hemos de hacer. Por ejemplo para el bucle principal de un juego siempre usaremos While. Para cualquier cosa que dependa de una acción de usuario, del azar u otras cosas que van a pasar a medida que doy vueltas por el bucle.
Vamos a ver un caso un poco indefinido : buscar un elemento en un array. Por supuesto dejaremos de buscar una vez hayamos encontrado el elemento.
function findNumber(arr, num) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === num) return i; // Salimos en cuanto encontramos el número
}
return -1; // Si no lo encontramos, devolvemos -1
}
function findIndex(arr, value) {
let i = 0;
while (i < arr.length) {
if (arr[i] === value) return i;
i++;
}
return -1;
}
Comparando los elementos del bucle podemos ver que es lo mismo
let numeroSecreto = Math.floor(Math.random() * 10) + 1;
let intento;
while (intento !== numeroSecreto) {
intento = parseInt(prompt("Adivina el número (entre 1 y 10):"), 10);
if (intento < numeroSecreto) {
console.log("Demasiado bajo. Intenta de nuevo.");
} else if (intento > numeroSecreto) {
console.log("Demasiado alto. Intenta de nuevo.");
}
}
console.log("¡Felicidades! Has adivinado el número.");
Descripción: Simula un cajero donde el usuario tiene un saldo inicial de 100€. Puede retirar dinero hasta que se quede sin saldo o decida salir.
Pista: Usa confirm() para preguntar si quiere seguir sacando dinero.
let saldo = 100;
while (saldo > 0) {
let retiro = parseFloat(prompt(`Tu saldo es ${saldo}€. ¿Cuánto quieres retirar?`));
if (isNaN(retiro) || retiro <= 0) {
console.log("Cantidad no válida.");
continue;
}
if (retiro > saldo) {
console.log("Saldo insuficiente.");
} else {
saldo -= retiro;
console.log(`Has retirado ${retiro}€. Saldo restante: ${saldo}€`);
}
if (saldo > 0 && !confirm("¿Quieres hacer otra operación?")) {
break;
}
}
console.log("Gracias por usar nuestro cajero. 😊");
let suma = 0;
let numero;
while (true) {
numero = parseFloat(prompt("Ingresa un número (0 para salir):"));
if (numero === 0) break;
if (!isNaN(numero)) {
suma += numero;
console.log(`Suma actual: ${suma}`);
} else {
console.log("Por favor, ingresa un número válido.");
}
}
console.log(`La suma total es: ${suma}`);
El usuario entra palabras y las repite hasta que ponga "salir"
let palabra;
while (palabra !== "salir") {
palabra = prompt("Dime algo y lo repetiré (escribe 'salir' para terminar):");
if (palabra !== "salir") console.log(`${palabra}`);
}
console.log("Hasta pronto!");
Apostaremos hasta que acertemos la combinación del sorteo
function checkInput(inputId) {
var inputValue = document.getElementById(inputId).value;
var resultId = "result" + inputId[inputId.length - 1];
let sorteig;
let aposta;
let mida = 6;let minim = 1;let maxim = 49;
//Vamos a ver cuantas apuestas he de hacer para coincidir con el resultado del sorteo.
aposta = llenarArraySinRepeticiones(mida, minim, maxim);
sorteig = llenarArraySinRepeticiones(mida, minim, maxim);
let intents = 1;
let iguals = comparaArray(sorteig, aposta);
while (!iguals){
intents++;
aposta = llenarArraySinRepeticiones(mida, minim, maxim);
iguals = comparaArray(sorteig, aposta);
}
console.log("sorteig: " + sorteig);
console.log("aposta: " + aposta);
console.log("intents " + intents);
}
function comparaArray(sorteig, aposta){
let trobat = true;
sorteig.sort(); aposta.sort();
for (let i=0; i<sorteig.length; i++){
if (sorteig[i] !== aposta[i]){
trobat = false;
}
} return trobat;
}
function getRandomNumbers(min, max){
return Math.floor(Math.random() * (max-min+1) + min);
}
function omplirArray(mida, min, max){
var array= [];
for (let x=0; x<mida; x++){
array.push(getRandomNumbers(min, max));
}
return array;
}
function llenarArraySinRepeticiones(mida, min, max){
//Devuelve un array de longitud = mida con valores no repetidos.
//Seguramente es mejor hacerlo con un set()
let array = [];
let num;
while (array.length < mida){
num = getRandomNumbers(min, max);
if (findNumber(array, num) === -1){
array.push(num);
}
} return array;
}
function findNumber(arr, num) {
for (let i= 0; i < arr.length; i++){
if (arr[i] === num) return i;
}
return -1;
}
</script>
function generarNumerosLoteria() {
let numeros = new Set(); // Usamos un Set para evitar duplicados
while (numeros.size < 6) {
let num = Math.floor(Math.random() * 49) + 1;
numeros.add(num); // El Set solo añade valores únicos
}
return Array.from(numeros); // Convertimos el Set en un array
}
console.log(generarNumerosLoteria());
Bon exemple de creació d'un gist!