El despacho por clave de matriz asociativa es más poderosa de lo que parece a primera vista. No siempre es suficiente seleccionar diferentes datos, a veces es necesario ejecutar un código diferente.
Supongamos que necesitamos crear una matriz (array) con los apellidos de nuestros usuarios. La condición principal es que para las mujeres se toma el apellido de soltera.
Implementemos esta tarea utilizando el buen y viejo if:
const lastNames = users.map((user) => {
if (user.gender === 'female') {
return user.maidenName;
}
return user.lastName;
});
Ahora resolvamos esta tarea utilizando el despacho por clave de objeto, pero a diferencia de la lección anterior, los valores serán funciones:
// Definimos una clave-valor, donde la clave es el género y el valor es una función
// que devuelve el valor necesario para el género
const mapping = {
female: (user) => user.maidenName,
male: (user) => user.lastName,
};
// Seleccionamos la función necesaria según el género y la llamamos
// Se pasa el usuario dentro de la función
const lastNames = users.map((user) => mapping[user.gender](user));
En algunas situaciones, esta variante de solución de la tarea es mejor. En ella se pueden ver claramente las dependencias, especialmente si hay muchas de ellas. Además, la configuración de los datos permite moverlos a otro lugar y ampliar el comportamiento sin tener que reescribir el código que utiliza estos datos.
Otro ejemplo es el análisis de datos según su tipo:
import yaml from 'js-yaml';
const mapping = {
yml: yaml.load,
json: JSON.parse,
};
const parse = (type, data) => mapping[type](data);
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.