Skip to content

PaylemanC/30-Dias-JS--Platzi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

#PlaziChallenge: 30 días de JavaScript 👩‍💻

Este repositorio contiene todas las soluciones que he desarrollado para los playground del #PlatziChallenge "Aprende JavaScript en 30 días" entre Marzo-Abril 2023, con el objetivo de mejorar mis habilidades en JavaScript a través de una serie de ejercicios que abarcaron desde temas básicos hasta avanzados.

Día (num) Nombre Consigna Temas Archivo.js
1 1. Retorna el tipo Encontrar el tipo de dato del parámetro "valor" de una function "solution". Variables y Funciones / Tipos de datos numbers, strings, object, booleanos 1-retorna_tipo.js
2 2. Calcula la propina Calcular la propina que deben dejar los clientes de un restaurante de acuerdo a su consumo. Operadores aritméticos, lógicos, de asignación y comparación. 2-calcula_propina.js
3 3. Calcula años bisiestos Crear lógica de una función para determinar si un año es bisiesto o no. Condicional if-else 3-anio_bisiesto.js
4. Ejercicio de mascotas Retornar información específica de cuánto ejercicio necesita hacer las mascotas perro, gato y ave, de acuerdo a su edad. Condicional Switch / Condicional if-else / condicional ternario 4-mascotas_ejercicio.js
Solución alternativa: 4-mascotas_ejercicio_alt.js
5. Dibuja un triángulo Dibujar un triángulo isósceles alineado a la derecha usando bucles. Ciclo For / for-in y for-of / ciclo while / ciclo do-while / .repeat() 5-dibuja_triangulo.js
Solución alternativa: 5-dibuja_triangulo_alt.js
4 6. Encuentra el michi más famoso Filtrar de un array de objetos con nombres de gatos y followers en social media, los gatos con el mayor número de seguidores y devolverlos en forma de array. Arrays y objetos / Métodos push, reduce, pop, map. 6-gatitos_famosos.js
7. Obtén el promedio de los estudiantes Calcular el promedio general de una clase y el promedio individual de cada estudiante a través de un array de estudiantes con su nombre y notas. Manipulación de objetos y arrays / toFixed() 7-promedio_estudiantes.js
5 Checkpoint 1: Encuentra el mayor palíndromo Encontrar el palíndromo más largo de un array de palabras. (una palabra que se lee de la misma forma tanto hacia adelante como hacia atrás) Métodos de manipulación de array, .split, .reverse, .join checkpoint-1.js
6 Teoría - Reasignación y Redeclaración, "use strict" -
7 Teoría - Debugging con try-catch y debugger; / Programación funcional -
8 8. Crea una calculadora con closures Crea una calculadora con los métodos add (suma), subtract(resta), multiply (multiplicación), divide (división), clear (reinicia a 0) y getTotal (devuelve el total actual). Clousures & Scope, programación funcional 8-calculadora.js
9. Crea tu propio método map Desarrolla una implementación personalizada del método map utilizando funciones de orden superior. Higher order functions 9-map.js
9 Teoría - ECMAScript y TC39 -
10 Checkpoint 2: Crea un planificador de tareas Que permita mostrar un registro, agregar, eliminar y marcar completas las tareas, con una función closure createTaskPlanner. Métodos: addTask(task), removeTask(value), getTasks(), getPendingTasks(), getCompletedTasks(), markTaskAsCompleted(value), getSortedTasksByPriority(), filterTaskByTag(), updateTask(taskId, updates). Closures y Scope, métodos de manipulación de arrays: push, findIndex, filter, etc., spread operator checkpoint-2.js
11 10. Crea una promesa para mandar emails Implementa la lógica para que, usando promesas, envíe el correo después de 2 segundos; en caso de que hayan campos faltantes, lanza un error. Asincronismo, promesas 10-enviar_email.js
11. Evita el callback hell haciendo uso de promises Un código base con mala práctica de callback hell que debes solucionar usando promesas (sin async/await). Promises, callback hell 11-callbackhell_promesas.js
12. Evita el callback hell haciendo uso de await Un código base con mala práctica de callback hell que debes solucionar usando async/await. async/await, callback hell 12-callbackhell_async_await.js
12 13. Valida un formulario de registro de usuario Tomando en cuenta que todos los campos estén completos y que el email no exista ya en la lista de usuarios registrados; si todo está correcto, agrega al usuario con todos sus datos excepto contraseña y retorna un mensaje de registro exitoso con el nombre y apellido. Arrays y métodos como push, filter, some, map, find, join, etc. 13-validar_form.js
13 14. Agrupa los productos Agrupa una lista de productos según su categoría, retornando un array con los nombres y un totalPrice con la suma total de los precios. Objetos y arrays, métodos como includes, join, etc. 14-agrupar_productos.js
15. Encuentra la ubicación del valor buscado Encuentra un valor en un array de dos dimensiones, retornando la posición del valor según row y column. Manipulación de arrays bidimensionales, métodos como flat y flatMap. 15-encuentra_ubicacion.js
14 16. Modifica una lista de compras Procesa una lista de compras modificando el array original donde si el nombre del producto incluye "oferta" aplica descuento del 20%, multiplica el precio del producto por su cantidad, y retorna el precio final de toda la compra. Manipulación de objetos y arrays, mutable functions. 16-modifica_shoppinglist.js
17. Ordena los productos Ordena una lista de productos (devolviendo una copia) con métodos de ordenamiento para que los disponibles en el inventario sean colocados al principio de la lista y luego sean ordenados por su precio de manera ascendente. Mutable functions, método sort 17-ordena_productos.js
15 Checkpoint 3: Sistema de reservaciones de un hotel Utiliza closures para un crear administrador de habitaciones de un hotel. Funciones: searchReservation(id), getSortReservations(), addReservation(reservation), removeReservation(id), getReservations(), getAvailableRooms(checkIn, checkOut). Formato de reservaciones: { id, name, checkIn, checkOut, roomNumber} Closures, manipulación de array y objetos checkpoint-3.js
16 18. Congela el objeto recursivamente Crea una copia congelada de un objeto-perro para evitar cambios en sus propiedades (incluyendo objetos anidados). Programación Orientada a Objetos, o Object.assign y Object.freeze, objetos literales. 18-congela_objeto.js
17 19. Modifica el prototype de los arrays Crea tu propia implementación de filter para el prototype de arrays. Prototipos en JavaScript, Array.prototype, callbacks, filter 19-modifica_array_prototype.js
20. Crea un auto usando clases Con los atributos brand, model, year, mileage, y state (apagado/encendido) y los métodos turnOn(), turnOff() y drive(kilometers). Programación Orientada a Objetos, atributos y métodos de clase 20-auto.js
18 21. Sistema de carrito de compras Creando clases Article y Service hijas de Product, Article implementará un addToCart() con nombre y cantidad de artículos, y Service el mismo pero solo con nombre. Finalmente una clase Cart implementará métodos addProduct(product), deleteProduct(product), calculateTotal(), getProducts() POO, herencia, abstracción 21-carrito_compras.js
22. Encapsula datos de los usuarios Protege los datos privados de una clase Usuario (name, age, friends, messages), con métodos públicos addFriend(friend), sendMessage(message, friend), showMessage. Incluye getters y setters de name y age POO, encapsulamiento, getters y setters 22-encapsula_usuario.js
19 23. Jerarquía de animales Crea una jerarquía con las clases Animal (name, age, species, getInfo()), luego Mammal (hasFur(), getInfo()) y luego Dog (breed, getInfo(), bark()). POO, herencia 23-jerarquia_animales.js
24. Sistema de pagos Implementa un sistema de pagos utilizando polimorfismo, con clases Pay (makePay(quantity)), PayPal (makePlay + platform e email), Card (nro de tarjeta 16 dígitos + lastCardNumbers) y Cash. Añade función processPay que recibe un método de pago y cantidad llamando a makePay. POO, polimorfismo 24-sistema_pagos.js
20 Checkpoint 4: Agenda de vuelos Crea un sistema de reservaciones de vuelos con clases: Passenger (name, lastName, age y array de flights), Reservation (con un objeto Flight y Passenger y método reservationDetails()), y Flight (origin, destination, date, capacity, price, y array passengers, y método sellTicket(passenger) con validación de vacantes) con sus subclases PremiumFlight (+ propiedad que suma costo adicional al precio) y Economic Flight (descuento 20% para -18 o +65 años) Programación Orientada a Objetos: polimorfismo, abstracción, herencia, encapsulamiento. checkpoint-4.js
21 25. Implementa Singleton en un chat Aplica Singleton en una clase Chat con los métodos sendMessage(message), addUser(user), removeUser(name). Patrones de diseño de software (teoría), patrón Singleton 25-singleton_chat.js
22 26. Personaliza productos de una tienda Usa el patrón decorator para personalizar la compra de un Product (price y descripción) con las clases BasicProduct (+ retorno nombre con getDescription()) , WarrantyDecorator (+ 20$ al precio y string “con garantía” en la descripción), y ShippingInsuranceDecorator (20$ al precio y string “con seguro de envío” en la descripción). Patrones de diseño de software (teoría), patrón Decorator 26-decorator_personalizar_producto.js
27. Construye un auto usando Builder pattern Mejorando la legibilidad de su creación al tener múltiples atributos. Patrones de diseño de software (teoría), Builder Pattern 27-builder_auto.js
23 28.
29.
24 Checkpoint 5:
25 30.
31.
26 32.
33.
27 34.
35.
28 36.
29 37.

About

Playgrounds del reto #30diasJSPlatzi de marzo a abril de 2023.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published