Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Despacho por clave (funciones) JS: Polimorfismo

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.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY