30 días de JS con LeoCode

Clase 97 de 9930 días de JavaScript

Resumen

Aprende JavaScript con seguridad y foco: aquí encontrarás las ideas más valiosas de una sesión en vivo donde se revisan soluciones reales, se comparten mejores prácticas y se anuncian nuevas etapas del reto. Conecta con la comunidad, domina ejercicios clave y prepárate para patrones de diseño.

¿Cómo funciona el reto 30 días de JavaScript y qué oportunidades hay?

Durante el reto se publican ejercicios diarios y sesiones para evaluar soluciones de la comunidad. La clave es la consistencia: programar todos los días crea el hábito.

  • Inscripción y seguimiento en la landing del reto. Busca “treinta días de JavaScript”.
  • Fechas importantes: Platzi Day ofrece acceso gratis del 31 al 2 de abril. Entra a platzi.com/day.
  • Progreso del curso: días liberados hasta el 23 y un checkpoint en el 24. Se irán habilitando más con apoyo de la comunidad en redes.
  • Fecha límite del reto: 17 de abril para completar la mayoría de playgrounds y presentar la certificación.
  • Certificación: examen corto de alrededor de 10 preguntas. Enfocado en comprensión práctica.
  • Comunidad: feedback activo en comentarios y Discord. Reporta errores de enunciados o pruebas.
  • Spoiler positivo: se trabajan sagas de “30 días de Python” y “30 días de SQL”. Primero llegará Python.

Consejo para Platzi Day: elige un enfoque. Si dudas, mira clases introductorias de varias escuelas hasta que un tema te enganche y dedícale las 72 horas.

¿Cómo resolver ejercicios de JavaScript con promesas, arrays y buenas prácticas?

Se revisaron varios ejercicios del reto con soluciones diversas. La enseñanza central: en JavaScript casi nunca existe una única forma correcta.

¿Cómo implementar una promesa con setTimeout y namespace window?

Ejercicio: enviar un email con una promesa que valida email, subject y body, y resuelve tras 2 segundos.

  • Usa promesas para operaciones asíncronas que suceden “en algún momento”.
  • Utiliza window.setTimeout para que las pruebas puedan “espiar” correctamente las llamadas.
  • Valida entradas: si falta un dato, rechaza la promesa con un error útil.
  • Aprendizaje de pruebas: se mencionó un espía que verifica la invocación de setTimeout mediante window.
  • Habilidades: manejo de promesas, temporizadores, validación defensiva, lectura de pruebas.

Keywords: promesas, setTimeout, window, validación, error handling.

¿Cómo procesar una lista de compras aplicando “oferta” y optimizando el cálculo?

Ejercicio: si el nombre del producto incluye “oferta”, aplica 20% de descuento y devuelve el total. Se modifica la lista original.

  • Varias rutas: for, forEach, reduce o una sola pasada con acumulación.
  • Solución óptima destacada: un único ciclo que calcula descuento, actualiza el precio, elimina quantity con delete y acumula el total sin un segundo ciclo.
  • Por qué delete importa: elimina la referencia a una propiedad en un objeto; no “borra” el objeto. Relacionado con el Garbage Collector.
  • Complejidad: un solo bucle evita un reduce adicional. Aporta eficiencia sin perder legibilidad.
  • Habilidades: manipulación de objetos, mutabilidad controlada, iteración, cálculo acumulado, pensamiento algorítmico.

Keywords: for, forEach, reduce, delete, Garbage Collector, descuento, mutación.

¿Cómo encontrar el palíndromo más largo sin split/reverse?

Ejercicio: detectar el palíndromo de mayor longitud.

  • Camino directo: split + reverse + join para verificar cada palabra.
  • Camino algorítmico: reconstruir la palabra invertida con bucles, sin split/reverse. Fortalece el razonamiento y el control de índices.
  • Si hay empates, se retorna el primero según el enunciado.
  • Habilidades: manejo de índices, comparación de cadenas, diseño de soluciones sin atajos.

Keywords: palíndromo, split, reverse, control de índices, comparación de strings.

Notas de pruebas y “hacks” educativos:

  • Un playground de “crear tu propio map” bloquea el uso de map. Se detectó que la herramienta de pruebas internamente usa map, lo que puede marcar falsos positivos. Ya está identificado para corrección.
  • Lección: prioriza aprender el patrón sobre “ganarle” a la prueba; los atajos rara vez escalan.

¿Qué viene: patrones de diseño, nuevas sagas y más ejercicios?

Se mostraron spoilers de nuevas actividades centradas en patrones de diseño y estructuras de datos.

  • Patrones de diseño a implementar en playgrounds:
  • Singleton: instancia única compartida.
  • Observer: suscripción y notificación de cambios.
  • Proxy: control de acceso a operaciones.
  • Decorator: añadir funcionalidad como garantía a un producto.
  • Builder: construir objetos paso a paso de forma explícita.
  • Progresión del curso: tras el checkpoint del día 24 llegan estructuras de datos.
  • Primer ejercicio de estructuras: crear un array “desde cero” sin corchetes. Pista mental: piensa en cómo gestionar índices y almacenamiento.
  • Comunidad y motivación: se liberaron nuevos días al detectar apoyo en redes. Se seguirán habilitando más si crece la participación y el feedback.
  • Invitada especial: viene Tef para resolver ejercicios en vivo. Se evalúa un versus amistoso entre profes si la comunidad lo impulsa en redes.

Keywords: patrones de diseño, Singleton, Observer, Proxy, Decorator, Builder, estructuras de datos, playground, checkpoint, certificación.

¿Te gustaría que revisemos tu solución o propongamos un versus entre profes? Deja tu comentario con el ejercicio, tu enfoque y qué te gustaría ver en las siguientes sesiones.

      30 días de JS con LeoCode