30 días de JS con GNDX
Clase 96 de 99 • 30 días de JavaScript
Contenido del curso
Día 1
Día 2
Día 3
Día 4
Día 5 - Checkpoint
Día 6
Día 7
Día 8
Día 9
Día 10 - Checkpoint
Día 11
Día 12
Día 13
Día 14
Día 15 - Checkpoint
Día 16
Día 17
Día 18
Día 19
Día 20 - Checkpoint
Día 21
Día 22
Día 23
Día 24 - Checkpoint
Día 25
Día 26
Día 27
Día 28
Día 29
Día 30
Live Class
Aprende a implementar una validación de formulario en JavaScript paso a paso, tal como se resolvió en una sesión de pair programming del reto de treinta días de JavaScript. Verás cómo analizar el problema, usar métodos de arrays y manejar errores de forma clara para garantizar datos consistentes y evitar correos duplicados.
¿Qué se resolvió y por qué importa en JavaScript?
Se implementó la función validateForm que recibe dos parámetros: formData (datos del formulario) y registeredUsers (usuarios ya registrados). La lógica cubre cuatro puntos clave:
- Verificar campos requeridos: name, last name, email y password.
- Lanzar un error con los campos faltantes si hay vacíos.
- Detectar si el email ya existe en la lista de usuarios.
- Agregar el nuevo usuario sin el password y retornar: «Tu registro fue exitoso, Nombre Apellido».
El enfoque resaltó la importancia del análisis antes de codificar: entender requisitos, revisar la vista, inspeccionar datos y usar herramientas como console.log, linter o incluso ChatGPT para acelerar el diagnóstico.
¿Cómo validar formularios con arrays y objetos en JavaScript?
La solución aprovechó métodos de arrays como every, filter, some y find, además de estructuras de datos como FormData y utilidades como Object.keys para comprender el objeto recibido. Se recalcó que no se pedía validar el formato del correo con regex, solo la presencia de campos y la unicidad del email.
¿Cómo verificar campos requeridos con every y filter?
- Define un arreglo de requeridos: ["name", "last name", "email", "password"].
- Comprueba que todos existan en formData.
- Si faltan, arma un mensaje con los ausentes usando filter y join.
export function validateForm(formData, registeredUsers) {
const requiredFields = ["name", "last name", "email", "password"];
if (!requiredFields.every(field => formData[field])) {
const missing = requiredFields.filter(field => !formData[field]);
throw new Error(`Faltan los siguientes campos requeridos: ${missing.join(', ')}`);
}
// ... (continuación abajo)
}
Nota práctica: usar solo Object.keys(formData) te dice qué llaves existen, pero no si sus valores están vacíos. La validación debe revisar el valor de cada campo.
¿Cómo evitar emails duplicados con some o find?
- Recorre la lista de usuarios para comparar el email entrante.
- Lanza un error si ya existe.
const existsUser = registeredUsers.some(user => user.email === formData.email);
if (existsUser) {
throw new Error(`El usuario con el email ${formData.email} ya existe`);
}
¿Cómo guardar el usuario sin exponer el password?
- Inserta solo name, last name y email.
- Devuelve un mensaje de éxito personalizado.
registeredUsers.push({
name: formData.name,
"last name": formData["last name"],
email: formData.email,
});
return `Tu registro fue exitoso, ${formData.name} ${formData["last name"]}`;
}
¿Qué habilidades y buenas prácticas se reforzaron?
Se enfatizaron hábitos que marcan la diferencia en el día a día:
- Análisis del problema antes del código. Entender entradas, salidas y reglas.
- Descomposición en pasos pequeños. Requeridos, duplicados y almacenamiento por separado.
- Depuración con console.log. Validar estructuras y valores reales.
- Manejo de errores claro. Mensajes específicos con campos faltantes.
- Métodos de arrays en contexto.
- every: confirma que todos los requeridos están presentes.
- filter: identifica campos faltantes para el mensaje.
- some/find: detecta emails duplicados.
- join: formatea el listado de faltantes.
- Criterio sobre llaves vs. valores. Object.keys solo revela llaves; hay que validar contenido.
- Colaboración y comunidad. Pair programming y retroalimentación en Discord.
- Apoyo en herramientas. Linter, ChatGPT, búsquedas técnicas y extensiones como Code Spell Check/Checker para evitar typos.
¿Te gustaría compartir cómo validarías contraseñas o aplicarías una regex para email si el requerimiento lo pidiera? Cuéntalo en los comentarios y suma tu propia versión del reto.