diff --git a/ejercicios.js b/ejercicios.js index c12f2d1..c820254 100644 --- a/ejercicios.js +++ b/ejercicios.js @@ -10,7 +10,23 @@ console.log("Archivo vinculado correctamente."); const numeros = [1, 2, 3, 4, 5, 6, 7, 8]; // Resultado esperado: [4, 16, 36, 64] +//función para filtrar pares +function esPar(numero) { + return numero % 2 === 0; +} +//función para elevar al cuadrado +function alCuadrado(numero) { + return numero * numero; +} + +//filter +const pares = numeros.filter(esPar); + +//map +const resultado = pares.map(alCuadrado); + +console.log(resultado); /* @@ -19,15 +35,23 @@ const numeros = [1, 2, 3, 4, 5, 6, 7, 8]; */ const productos = [ - { nombre: "Teclado", precio: 800 }, - { nombre: "Monitor", precio: 3500 }, - { nombre: "Mouse", precio: 600 }, - { nombre: "Auriculares", precio: 1200 } + { nombre: "Teclado", precio: 800 }, + { nombre: "Monitor", precio: 3500 }, + { nombre: "Mouse", precio: 600 }, + { nombre: "Auriculares", precio: 1200 } ]; // Resultado esperado: ["Teclado", "Mouse"] // Pista: se puede resolver encadenando `filter` y `map`. +const nombresProductosBaratos = productos + .filter(function (producto) { + return producto.precio < 1000; + }) + .map(function (producto) { + return producto.nombre; + }); +console.log(nombresProductosBaratos); /* 3. Escribir una función `describir` que reciba un objeto persona con las @@ -36,6 +60,12 @@ const productos = [ parámetros de la función. */ +function describir({ nombre, edad, ciudad }) { + return `${nombre} tiene ${edad} años y vive en ${ciudad}`; +} + +console.log(describir({ nombre: "Ana", edad: 25, ciudad: "Rosario" })); + /* 4. Dado el siguiente array de estudiantes, calcular el promedio general de notas @@ -43,25 +73,64 @@ const productos = [ */ const estudiantes = [ - { nombre: "Ana", nota: 88 }, - { nombre: "Luis", nota: 72 }, - { nombre: "Marta", nota: 95 }, - { nombre: "Carlos", nota: 60 } + { nombre: "Ana", nota: 88 }, + { nombre: "Luis", nota: 72 }, + { nombre: "Marta", nota: 95 }, + { nombre: "Carlos", nota: 60 } ]; // Resultado esperado: 78.75 +// extraigo las notas usando map y callback +const notas = estudiantes.map(function (estudiante) { + return estudiante.nota; +}); + +//sumo las notas usando un loop +let suma = 0; +for (const nota of notas) { + suma += nota; +} + +// calculo el promedio general +const promedio = suma / notas.length; + +console.log(promedio); + /* 5. Usar `find` para buscar un usuario por nombre dentro de un array, y mostrar en consola un mensaje diferente según si se encontró o no. */ const usuarios = [ - { nombre: "Ana", activa: true }, - { nombre: "Luis", activa: false }, - { nombre: "Marta", activa: true } + { nombre: "Ana", activa: true }, + { nombre: "Luis", activa: false }, + { nombre: "Marta", activa: true } ]; // Buscar "Luis" → mostrar sus datos // Buscar "Pedro" → mostrar "Usuario no encontrado" +// creo una función auxiliar para probar con distintos nombres sin repetir código +function buscarYMostrarUsuario(nombreABuscar) { + // uso find con una función anónima + const usuarioEncontrado = usuarios.find(function (usuario) { + return usuario.nombre === nombreABuscar; + }); + + // verifico si find encontró algo o si retornó undefined + if (usuarioEncontrado !== undefined) { + console.log(usuarioEncontrado); + } else { + console.log("Usuario no encontrado"); + } +} + +// Buscar "Luis" → mostrar sus datos +buscarYMostrarUsuario("Luis"); +// Resultado en consola: { nombre: 'Luis', activa: false } + +// Buscar "Pedro" → mostrar "Usuario no encontrado" +buscarYMostrarUsuario("Pedro"); +// Resultado en consola: "Usuario no encontrado" + /* 6. Dado el siguiente array, construir un nuevo array que contenga solo las palabras con más de 4 letras, convertidas a mayúsculas. @@ -73,16 +142,26 @@ const palabras = ["sol", "tormenta", "mar", "lluvia", "río", "arcoíris"]; // Pistas: `palabra.length` da la cantidad de letras. `palabra.toUpperCase()` // convierte a mayúsculas. +const palabrasFiltradasYMayusculas = palabras + .filter(function (palabra) { + return palabra.length > 4; + }) + .map(function (palabra) { + return palabra.toUpperCase(); + }); + +console.log(palabrasFiltradasYMayusculas); + /* 7. Escribir una función `agrupar` que reciba un array de objetos con la forma `{ nombre, aprobado }` y retorne un objeto con dos propiedades: `aprobados` y `desaprobados`, cada una con un array de nombres. */ const resultados = [ - { nombre: "Ana", aprobado: true }, - { nombre: "Luis", aprobado: false }, - { nombre: "Marta", aprobado: true }, - { nombre: "Carlos", aprobado: false } + { nombre: "Ana", aprobado: true }, + { nombre: "Luis", aprobado: false }, + { nombre: "Marta", aprobado: true }, + { nombre: "Carlos", aprobado: false } ]; // Resultado esperado: @@ -91,6 +170,34 @@ const resultados = [ // desaprobados: ["Luis", "Carlos"] // } +function agrupar(listaResultados) { + // filtro y extraigo los nombres de los aprobados + const listaAprobados = listaResultados + .filter(function (estudiante) { + return estudiante.aprobado === true; + }) + .map(function (estudiante) { + return estudiante.nombre; + }); + + // filtro y extraigo los nombres de los desaprobados + const listaDesaprobados = listaResultados + .filter(function (estudiante) { + return estudiante.aprobado === false; + }) + .map(function (estudiante) { + return estudiante.nombre; + }); + + // retorno el objeto con ambas listas + return { + aprobados: listaAprobados, + desaprobados: listaDesaprobados + }; +} + +console.log(agrupar(resultados)); + /* 8. *(Opcional - closures)* Escribir una función `crearSumador` que reciba un número `base` y retorne una función que, al llamarla con otro número, @@ -100,3 +207,16 @@ const sumarDiez = crearSumador(10); console.log(sumarDiez(5)); // 15 console.log(sumarDiez(20)); // 30 */ + +function crearSumador(base) { + // retorno una nueva función tradicional anónima + return function (otroNumero) { + // esta función recuerda el valor de la variable 'base' + return base + otroNumero; + }; +} + +// ejemplo de uso +const sumarDiez = crearSumador(10); +console.log(sumarDiez(5)); // 15 +console.log(sumarDiez(20)); // 30 diff --git a/index.html b/index.html index b44ebd0..e7cb935 100644 --- a/index.html +++ b/index.html @@ -10,6 +10,6 @@
Vincular el archivo ejercicios.js a este archivo. Luego, resolver ahí los ejercicios.
- +