En este capítulo estamos trabajando con números y fechas, los ejercicios que vamos a hacer son los siguientes.
1. Conversión de números de base binaria a decimal
Vamos a crear una función que convierta números de base binaria a decimal y viceversa.
const convertirBinarioDecimal = ( numero = undefined, base = undefined ) => { if (numero === undefined) return console.log("No ingresaste el número a convertir"); if (typeof numero !== "number") return console.log("El parámetro número tiene que ser un número"); if (base === undefined) return console.log("No ingresaste una base"); if (typeof base !== "number") return console.log("La base ingresada no es un número"); if (base === 2) { return console.log( `${numero} base ${base} = ${parseInt(numero, base)} base 10` ); } else if (base === 10) { return console.log( `${numero} base ${base} = ${numero.toString(2)} base 2` ); } else { return console.log("El tipo de base a convertir no es válido"); } }; convertirBinarioDecimal(); convertirBinarioDecimal(100, 2); convertirBinarioDecimal(4, 10); convertirBinarioDecimal(4, 100);
2. Monto final
Vamos a programar una función que devuelva el monto final después de aplicar descuento a una cantidad dada.
const aplicarDescuento = (monto = undefined, descuento = 0) => { if (monto === undefined) return console.log("No ingresaste el monto"); if (typeof monto !== "number") return console.log("No ingresaste un número"); if (monto === 0) return console.log("El monto no puede ser cero"); if (Math.sign(monto) === -1) return console.log("El monto no puede ser negativo"); if (typeof descuento !== "number") return console.log("El descuento no es un número"); if (Math.sign(descuento) === -1) return console.log("El descuento no puede ser negativo"); return console.log( `${monto} - ${descuento}% = ${monto - (monto * descuento) / 100}` ); }; , aplicarDescuento(100, 10); aplicarDescuento(100, 100); aplicarDescuento(100, 20);
3. Cuantos años han pasado
Vamos a programar una función que, dada una fecha válida,determine cuantos años han pasado hasta el día de hoy. Para este ejercicio vamos a utilizar el formato timestamp, que significa cuantos milisegundos han pasado del 1 de enero de 1970 hasta ahora. Lo que interesaría sería convertir ambas fechas a valores timestamp, hacer la operación aritmética que tengamos que hacer, y esto, nuevamente volverlo a convertir a la unidad de tiempo que necesitemos nuevamente (segundos, horas…).
const calcularAnios = (fecha = undefined) => { if (fecha === undefined) return console.log("No mandaste la fecha"); if (!(fecha instanceof Date)) return console.log("El valor que ingresaste no es una fecha válida"); // Variable expresada en milisegundos let hoyMenosFecha = new Date().getTime() - fecha.getTime(); // Transformación de milisegundos a una fecha entendible let aniosEnMilisegundos = 1000 * 60 * 60 * 24 * 365; let aniosHumanos = Math.floor(hoyMenosFecha / aniosEnMilisegundos); return Math.sign(aniosHumanos) === -1 ? console.log( `Faltan ${Math.abs( aniosHumanos )} años para el ${fecha.getFullYear()}` ) : Math.sign(aniosHumanos) === 1 ? console.log( `Han pasado ${aniosHumanos} años desde ${fecha.getFullYear()}` ) : console.log(`Estamos en el año actual: ${fecha.getFullYear()}`); }; calcularAnios(new Date()); calcularAnios(new Date(1972, 2, 14)); calcularAnios(new Date(1872, 2, 14)); calcularAnios(new Date(2050, 2, 14));