diff --git a/ejercicios.js b/ejercicios.js index c12f2d1..6fe9b70 100644 --- a/ejercicios.js +++ b/ejercicios.js @@ -7,18 +7,21 @@ console.log("Archivo vinculado correctamente."); 1. Dado el siguiente array, usar `filter` para obtener solo los números pares, y luego `map` para elevarlos al cuadrado. */ -const numeros = [1, 2, 3, 4, 5, 6, 7, 8]; +const numbers = [1, 2, 3, 4, 5, 6, 7, 8]; // Resultado esperado: [4, 16, 36, 64] +const isEven = (num) => num % 2 === 0; - +const evenNumbers = numbers.filter(isEven); +const squaredEvenNumbers = evenNumbers.map(num => num ** 2); +console.log(squaredEvenNumbers); /* 2. Dado el siguiente array de productos, obtener los nombres de todos los productos que cuestan menos de $1000. */ -const productos = [ +const products = [ { nombre: "Teclado", precio: 800 }, { nombre: "Monitor", precio: 3500 }, { nombre: "Mouse", precio: 600 }, @@ -27,7 +30,9 @@ const productos = [ // Resultado esperado: ["Teclado", "Mouse"] // Pista: se puede resolver encadenando `filter` y `map`. - +const cheapestProducts = products.filter(product => product.precio < 1000); +const cheapestProductNames = cheapestProducts.map(product => product.nombre); +console.log(cheapestProductNames); /* 3. Escribir una función `describir` que reciba un objeto persona con las @@ -36,53 +41,80 @@ const productos = [ parámetros de la función. */ +const descriptingPerson = ({name, age, city}) => (`${name} tiene ${age} años y vive en ${city}.`); +descriptingPerson({ name: "Facundo", age: 25, city: "Rosario" }); + +console.log(descriptingPerson({ name: "Facundo", age: 25, city: "Rosario" })); /* 4. Dado el siguiente array de estudiantes, calcular el promedio general de notas usando `map` para extraer las notas y luego un loop para sumarlas. */ -const estudiantes = [ - { nombre: "Ana", nota: 88 }, - { nombre: "Luis", nota: 72 }, - { nombre: "Marta", nota: 95 }, - { nombre: "Carlos", nota: 60 } +const students = [ + { name: "Ana", grades: 88 }, + { name: "Luis", grades: 72 }, + { name: "Marta", grades: 95 }, + { name: "Carlos", grades: 60 } ]; // Resultado esperado: 78.75 +const grades = students.map(student => student.grades); +let sum = 0; +for (let grade of grades) { + sum += grade; +} +const average = sum / grades.length; +console.log(average); + /* 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 } +const users = [ + { name: "Ana", active: true }, + { name: "Luis", active: false }, + { name: "Marta", active: true } ]; // Buscar "Luis" → mostrar sus datos // Buscar "Pedro" → mostrar "Usuario no encontrado" +const findUser = (name) => { + const user = users.find(user => user.name === name); + if (user) { + console.log(user); + } else { + console.log("Usuario no encontrado"); + } +}; + +findUser("Luis"); +findUser("Pedro"); + /* 6. Dado el siguiente array, construir un nuevo array que contenga solo las palabras con más de 4 letras, convertidas a mayúsculas. */ -const palabras = ["sol", "tormenta", "mar", "lluvia", "río", "arcoíris"]; +const words = ["sol", "tormenta", "mar", "lluvia", "río", "arcoíris"]; // Resultado esperado: ["TORMENTA", "LLUVIA", "ARCOÍRIS"] // Pistas: `palabra.length` da la cantidad de letras. `palabra.toUpperCase()` // convierte a mayúsculas. +const longWords = words.filter(word => word.length > 4).map(word => word.toUpperCase()); +console.log(longWords); + /* 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 } +const results = [ + { name: "Ana", passed: true }, + { name: "Luis", passed: false }, + { name: "Marta", passed: true }, + { name: "Carlos", passed: false } ]; // Resultado esperado: @@ -91,6 +123,17 @@ const resultados = [ // desaprobados: ["Luis", "Carlos"] // } +const agroupedResults = results.reduce((acc, result) => { + if (result.passed) { + acc.passed.push(result.name); + } else { + acc.failed.push(result.name); + } + return acc; +}, { passed: [], failed: [] }); + +console.log(agroupedResults); + /* 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 +143,9 @@ const sumarDiez = crearSumador(10); console.log(sumarDiez(5)); // 15 console.log(sumarDiez(20)); // 30 */ + +const makeSum = (base) => (num) => base + num; + +const sumTen = makeSum(10); +console.log(sumTen(5)); +console.log(sumTen(20)); \ No newline at end of file diff --git a/index.html b/index.html index b44ebd0..42318b5 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,6 @@
Vincular el archivo ejercicios.js a este archivo. Luego, resolver ahí los ejercicios.
- -