Unidad 1: Uso Avanzado de Números, Cadenas y Fechas
1.5 Uso Avanzado de Números, Cadenas y Fechas
En este tema exploraremos las clases y bibliotecas integradas de JavaScript para trabajar con números, cadenas y fechas, sus métodos y propiedades principales, y cómo aplicar estas herramientas en escenarios prácticos.
1.5.1 Clase Number
La clase Number en JavaScript representa valores numéricos y proporciona una serie de propiedades y métodos útiles para trabajar con números.
Propiedades de la Clase Number
-
Number.MAX_VALUE: El número positivo más grande que se puede representar en JavaScript.
console.log(Number.MAX_VALUE); // Ejemplo: 1.7976931348623157e+308
-
Number.MIN_VALUE: El número positivo más pequeño mayor que 0.
console.log(Number.MIN_VALUE); // Ejemplo: 5e-324
-
Number.POSITIVE_INFINITY: Representa el infinito positivo.
console.log(Number.POSITIVE_INFINITY); // Infinity
-
Number.NEGATIVE_INFINITY: Representa el infinito negativo.
console.log(Number.NEGATIVE_INFINITY); // -Infinity
-
Number.NaN: Representa un valor que no es un número (Not-a-Number).
console.log(Number.NaN); // NaN
Importante
El valor NaN suele aparecer como resultado de operaciones inválidas, como dividir 0 entre 0.
Métodos de la Clase Number
-
Number.isNaN(valor): Comprueba si un valor es NaN.
| console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN(10)); // false
|
-
Number.isInteger(valor): Determina si un valor es un número entero.
| console.log(Number.isInteger(42)); // true
console.log(Number.isInteger(42.5)); // false
|
-
toFixed(decimales): Redondea un número al número de decimales especificado y lo convierte en una cadena.
| let num = 3.14159;
console.log(num.toFixed(2)); // "3.14"
|
-
toString(base): Convierte un número en una cadena con la base especificada (binaria, octal, decimal, hexadecimal, etc.).
| let num = 255;
console.log(num.toString(16)); // "ff" (hexadecimal)
console.log(num.toString(2)); // "11111111" (binario)
|
-
parseInt(cadena, base): Convierte una cadena en un número entero según la base indicada.
| console.log(parseInt("1010", 2)); // 10 (binario a decimal)
console.log(parseInt("FF", 16)); // 255 (hexadecimal a decimal)
|
-
parseFloat(cadena): Convierte una cadena en un número decimal.
| console.log(parseFloat("3.14")); // 3.14
console.log(parseFloat("123abc")); // 123
|
Ejemplo Completo
Ejemplo de uso de la Clase Number
| let valor = 123.456;
console.log("Valor original:", valor);
console.log("Redondeado a 2 decimales:", valor.toFixed(2));
console.log("¿Es un entero?:", Number.isInteger(valor));
console.log("Máximo valor representable:", Number.MAX_VALUE);
console.log("Valor en hexadecimal:", valor.toString(16));
console.log("Número desde cadena:", parseFloat("123.45"));
|
Ejercicios: Clase Number
Ejercicio 1: Propiedades y Métodos de Number
- Declara un número y muestra:
- Su valor redondeado a 2 decimales.
- Su representación en binario y hexadecimal.
- Si es un entero o no.
Solución
| let numero = 42.789;
console.log("Redondeado a 2 decimales:", numero.toFixed(2));
console.log("En binario:", numero.toString(2));
console.log("En hexadecimal:", numero.toString(16));
console.log("¿Es un entero?:", Number.isInteger(numero));
|
Ejercicio 2: Conversión de bases
- Escribe un programa que convierta un número en distintas bases: binario, octal y hexadecimal.
Solución
| let numero = 255;
console.log("Binario:", numero.toString(2));
console.log("Octal:", numero.toString(8));
console.log("Hexadecimal:", numero.toString(16));
|
Ejercicio 3: Validar valores numéricos
- Dado un valor, verifica si es un número válido o
NaN.
Solución
| let valor1 = NaN;
let valor2 = 42;
console.log("¿Es NaN (valor1)?:", Number.isNaN(valor1));
console.log("¿Es NaN (valor2)?:", Number.isNaN(valor2));
|
Ejercicio 4: Convertir binario a decimal
- Crea una función que reciba una cadena con un número binario y devuelva su valor en decimal.
Solución
| function binarioADecimal(binario) {
return parseInt(binario, 2);
}
console.log("Binario 1010 a decimal:", binarioADecimal("1010"));
|
Ejercicio 5: Cálculo de porcentaje
- Calcula el porcentaje de un valor usando números decimales. Por ejemplo, el 15% de 200.
Solución
| let total = 200;
let porcentaje = 15;
let resultado = (total * porcentaje) / 100;
console.log("El 15% de 200 es:", resultado);
|
1.5.2 Biblioteca Math
La biblioteca Math proporciona una serie de constantes y funciones para realizar operaciones matemáticas comunes.
Constantes de Math
Math.PI: Representa el valor de π.
| console.log(Math.PI); // 3.141592653589793
|
Math.E: Base de los logaritmos naturales.
| console.log(Math.E); // 2.718281828459045
|
Math.LN10: Logaritmo natural de 10.
| console.log(Math.LN10); // 2.302585092994046
|
Métodos de Math
Math.sqrt(x): Calcula la raíz cuadrada de un número.
| console.log(Math.sqrt(16)); // 4
|
Math.pow(base, exponente): Calcula una potencia.
| console.log(Math.pow(2, 3)); // 8
|
Math.abs(x): Devuelve el valor absoluto de un número.
| console.log(Math.abs(-5)); // 5
|
Math.round(x): Redondea un número al entero más cercano.
| console.log(Math.round(4.5)); // 5
|
Math.floor(x) y Math.ceil(x):
Math.floor(x): Redondea hacia abajo.
Math.ceil(x): Redondea hacia arriba.
| console.log(Math.floor(4.7)); // 4
console.log(Math.ceil(4.2)); // 5
|
Math.random(): Genera un número aleatorio entre 0 y 1 (exclusivo).
| console.log(Math.random()); // Ejemplo: 0.5487
|
Math.min(...valores) y Math.max(...valores):
Math.min: Devuelve el menor valor.
Math.max: Devuelve el mayor valor.
| console.log(Math.min(3, 7, 2, 9)); // 2
console.log(Math.max(3, 7, 2, 9)); // 9
|
Ejemplo Completo
Ejemplo con la biblioteca Math
| let base = 5;
let exponente = 3;
console.log("Potencia:", Math.pow(base, exponente));
console.log("Raíz cuadrada de 25:", Math.sqrt(25));
console.log("Número aleatorio entre 0 y 1:", Math.random());
console.log("Redondeado hacia abajo (4.7):", Math.floor(4.7));
console.log("Redondeado hacia arriba (4.2):", Math.ceil(4.2));
|
Ejercicios: Biblioteca Math
Ejercicio 1: Generar número aleatorio
- Escribe un programa que genere un número aleatorio entre 1 y 100.
Solución
| let aleatorio = Math.floor(Math.random() * 100) + 1;
console.log("Número aleatorio entre 1 y 100:", aleatorio);
|
Ejercicio 2: Redondeo de números
- Solicita al usuario un número decimal y muestra:
- Su valor redondeado hacia abajo.
- Su valor redondeado hacia arriba.
- Su valor redondeado al entero más cercano.
Solución
| const prompt = require("prompt-sync")();
let numero = parseFloat(prompt("Introduce un número decimal: "));
console.log("Redondeado hacia abajo:", Math.floor(numero));
console.log("Redondeado hacia arriba:", Math.ceil(numero));
console.log("Redondeado al más cercano:", Math.round(numero));
|
Ejercicio 3: Calcular área de un círculo
- Solicita al usuario el radio de un círculo y calcula:
- Su área usando la fórmula:
Área = π * radio^2.
Solución
| const prompt = require("prompt-sync")();
let radio = parseFloat(prompt("Introduce el radio del círculo: "));
let area = Math.PI * Math.pow(radio, 2);
console.log("El área del círculo es:", area);
|
Ejercicio 4: Valor absoluto
- Solicita un número al usuario y muestra su valor absoluto.
Solución
| const prompt = require("prompt-sync")();
let numero = parseFloat(prompt("Introduce un número: "));
console.log("El valor absoluto es:", Math.abs(numero));
|
Ejercicio 5: Comparar números
- Solicita al usuario tres números y muestra:
- El menor de los tres.
- El mayor de los tres.
Solución
| const prompt = require("prompt-sync")();
let num1 = parseFloat(prompt("Introduce el primer número: "));
let num2 = parseFloat(prompt("Introduce el segundo número: "));
let num3 = parseFloat(prompt("Introduce el tercer número: "));
console.log("El menor número es:", Math.min(num1, num2, num3));
console.log("El mayor número es:", Math.max(num1, num2, num3));
|
1.5.3 Clase String
La clase String se utiliza para trabajar con cadenas de texto en JavaScript. Proporciona numerosas propiedades y métodos que facilitan la manipulación de texto.
Propiedades de la Clase String
length: Devuelve el número de caracteres en una cadena.
| let texto = "Hola, mundo";
console.log(texto.length); // 11
|
Métodos Comunes de String
toUpperCase() y toLowerCase():
-
Convierte una cadena a mayúsculas o minúsculas respectivamente.
| let texto = "JavaScript";
console.log(texto.toUpperCase()); // "JAVASCRIPT"
console.log(texto.toLowerCase()); // "javascript"
|
-
charAt(pos): Devuelve el carácter en una posición específica.
| let texto = "Hola";
console.log(texto.charAt(1)); // "o"
|
-
includes(subcadena): Verifica si una subcadena está presente en la cadena.
| let texto = "Hola, mundo";
console.log(texto.includes("mundo")); // true
|
-
indexOf(subcadena): Devuelve la posición de la primera aparición de una subcadena.
| let texto = "Hola, mundo";
console.log(texto.indexOf("mundo")); // 6
|
-
slice(inicio, fin): Extrae una sección de la cadena.
| let texto = "Hola, mundo";
console.log(texto.slice(0, 4)); // "Hola"
|
-
replace(buscar, reemplazo): Reemplaza una subcadena por otra.
| let texto = "El cielo es azul";
console.log(texto.replace("azul", "rojo")); // "El cielo es rojo"
|
-
split(separador): Divide una cadena en un array según un separador.
| let texto = "manzana,banana,naranja";
console.log(texto.split(",")); // ["manzana", "banana", "naranja"]
|
-
trim(): Elimina espacios en blanco al inicio y al final de una cadena.
| let texto = " Hola ";
console.log(texto.trim()); // "Hola"
|
Ejemplos Completos
Ejemplo con la Clase String
| let frase = " Aprende JavaScript, es genial! ";
console.log("Longitud:", frase.length);
console.log("En mayúsculas:", frase.toUpperCase());
console.log("Primera palabra:", frase.slice(2, 9));
console.log("¿Incluye 'genial'?:", frase.includes("genial"));
console.log("Sin espacios alrededor:", frase.trim());
|
Trocear una cadena por espacios
Dividir texto por espacios"
- Declara una cadena con el texto "nombre apellido1 apellido2".
- Muestra cada parte del texto (nombre, apellido1, apellido2) en líneas separadas sin utilizar arrays.
Otro ejemplo de la case Sttring
| Dividir texto por espacios |
|---|
| const texto = "nombre apellido1 apellido2";
let inicio = 0;
let espacio = texto.indexOf(" ");
while (espacio !== -1) {
console.log(texto.slice(inicio, espacio));
inicio = espacio + 1;
espacio = texto.indexOf(" ", inicio);
}
// Imprime la última parte de la cadena
console.log(texto.slice(inicio));
|
Ejercicios: Clase String
Ejercicio 1: Manipulación básica de cadenas
- Declara una cadena con el texto:
"Bienvenido a JavaScript".
- Convierte todo el texto a mayúsculas.
- Extrae la palabra
"JavaScript".
- Reemplaza la palabra
"Bienvenido" por "Hola".
Solución del ejercicio
| let texto = "Bienvenido a JavaScript";
console.log("En mayúsculas:", texto.toUpperCase());
console.log("Extraer 'JavaScript':", texto.slice(13));
console.log("Reemplazar 'Bienvenido':", texto.replace("Bienvenido", "Hola"));
|
Ejercicio 2: Contar palabras
- Escribe un programa que cuente el número de palabras en una cadena ingresada por el usuario.
Solución del ejercicio
| const prompt = require("prompt-sync")();
let frase = prompt("Introduce una frase: ");
let palabras = frase.trim().split(" ").length;
console.log("Número de palabras:", palabras);
|
Ejercicio 3: Verificar contenido
- Solicita al usuario una frase y verifica si contiene la palabra
"JavaScript".
Solución del ejercicio
| const prompt = require("prompt-sync")();
let frase = prompt("Introduce una frase: ");
console.log("¿Contiene 'JavaScript'?:", frase.includes("JavaScript"));
|
Ejercicio 4: Formatear una lista
- Dada una cadena con elementos separados por comas, conviértela en una lista con viñetas.
Solución del ejercicio
| let lista = "manzana,banana,naranja";
let elementos = lista.split(",");
console.log("Lista con viñetas:");
elementos.forEach(item => console.log("-", item));
|
Ejercicio 5: Eliminar espacios
- Solicita al usuario una frase y elimina todos los espacios en blanco.
Solución del ejercicio
| const prompt = require("prompt-sync")();
let frase = prompt("Introduce una frase: ");
console.log("Sin espacios:", frase.replace(/\s/g, ""));
|
1.5.4 Clase Date
La clase Date en JavaScript permite trabajar con fechas y horas, ofreciendo métodos para obtener, establecer y manipular valores temporales.
Creación de Fechas
-
Fecha actual:
| const ahora = new Date();
console.log("Fecha y hora actuales:", ahora);
|
-
Fecha específica:
| const fechaEspecifica = new Date(2025, 0, 20); // Año, mes (0-indexado), día
console.log("Fecha específica:", fechaEspecifica);
|
-
Desde una cadena:
| const fechaCadena = new Date("2025-01-20T15:30:00");
console.log("Fecha desde cadena:", fechaCadena);
|
Métodos Comunes de Date
-
getFullYear(): Obtiene el año.
| console.log(ahora.getFullYear()); // Ejemplo: 2025
|
-
getMonth(): Obtiene el mes (0-indexado).
| console.log(ahora.getMonth()); // Ejemplo: 0 para enero
|
-
getDate(): Obtiene el día del mes.
| console.log(ahora.getDate()); // Ejemplo: 20
|
-
getDay(): Obtiene el día de la semana (0 es domingo).
| console.log(ahora.getDay()); // Ejemplo: 1 para lunes
|
-
getHours(), getMinutes(), getSeconds(): Obtienen la hora, minutos y segundos.
| console.log(ahora.getHours(), ahora.getMinutes(), ahora.getSeconds());
|
-
toLocaleDateString(): Formatea la fecha en el formato local.
| console.log(ahora.toLocaleDateString()); // Ejemplo: "20/01/2025"
|
Comparar Fechas
Puedes comparar fechas usando operadores como <, >, <=, >=.
| const fecha1 = new Date("2025-01-20");
const fecha2 = new Date("2025-01-25");
console.log("¿Fecha1 es anterior a Fecha2?:", fecha1 < fecha2); // true
console.log("¿Son iguales?:", fecha1.getTime() === fecha2.getTime()); // false
|
Ejemplo Completo
Ejemplo con la Clase Date
| const ahora = new Date();
console.log("Fecha y hora actuales:", ahora);
console.log("Año:", ahora.getFullYear());
console.log("Mes:", ahora.getMonth() + 1); // Se suma 1 porque es 0-indexado
console.log("Día del mes:", ahora.getDate());
console.log("Hora actual:", ahora.getHours(), ":", ahora.getMinutes());
console.log("Formato local:", ahora.toLocaleDateString());
|
Ejercicios: Clase Date
Ejercicio 1: Obtener fecha y hora actuales
- Crea un programa que muestre:
- La fecha actual en formato local.
- La hora actual (hora:minutos).
Solución del ejercicio
| Fecha y hora actuales |
|---|
| const ahora = new Date();
console.log("Fecha actual:", ahora.toLocaleDateString());
console.log("Hora actual:", ahora.getHours() + ":" + ahora.getMinutes());
|
Ejercicio 2: Comparar dos fechas
- Solicita al usuario dos fechas en formato
YYYY-MM-DD.
- Compara ambas fechas e indica cuál es anterior o si son iguales.
Solución del ejercicio
| Comparar fechas |
|---|
| const prompt = require("prompt-sync")();
let fecha1 = new Date(prompt("Introduce la primera fecha (YYYY-MM-DD): "));
let fecha2 = new Date(prompt("Introduce la segunda fecha (YYYY-MM-DD): "));
if (fecha1 < fecha2) {
console.log("La primera fecha es anterior.");
} else if (fecha1 > fecha2) {
console.log("La segunda fecha es anterior.");
} else {
console.log("Ambas fechas son iguales.");
}
|
Ejercicio 3: Calcular días entre dos fechas
- Solicita al usuario dos fechas en formato
YYYY-MM-DD.
- Calcula la diferencia en días entre ambas fechas.
Solución del ejercicio
| Días entre fechas |
|---|
| const prompt = require("prompt-sync")();
let fecha1 = new Date(prompt("Introduce la primera fecha (YYYY-MM-DD): "));
let fecha2 = new Date(prompt("Introduce la segunda fecha (YYYY-MM-DD): "));
let diferencia = Math.abs(fecha2 - fecha1); // Diferencia en milisegundos
let dias = diferencia / (1000 * 60 * 60 * 24); // Convertir a días
console.log("Diferencia en días:", dias);
|
Ejercicio 4: Crear fecha a partir de valores
- Solicita al usuario que introduzca el año, mes y día por separado.
- Crea un objeto
Date con esos valores y muestra la fecha en formato local.
Solución del ejercicio
| Crear fecha a partir de valores |
|---|
| const prompt = require("prompt-sync")();
let anio = parseInt(prompt("Introduce el año: "));
let mes = parseInt(prompt("Introduce el mes (1-12): ")) - 1; // Restar 1 porque es 0-indexado
let dia = parseInt(prompt("Introduce el día: "));
let fecha = new Date(anio, mes, dia);
console.log("Fecha creada:", fecha.toLocaleDateString());
|