Funciones de bifurcación convergente

Beginner

This tutorial is from open-source community. Access the source code

Introducción

En este laboratorio, exploraremos el concepto de funciones de bifurcación convergente en JavaScript. El propósito de este laboratorio es ayudarte a entender cómo crear una función de orden superior que acepte una lista de funciones de bifurcación y una función convergente como argumentos y devuelva una nueva función que aplique cada función de bifurcación a los argumentos y pase los resultados a la función convergente. Esta técnica puede ser útil en muchos escenarios donde necesites combinar múltiples funciones para producir un resultado final.

Funciones convergentes

Para practicar la codificación, abre la Terminal/SSH y escribe node.

Esta función converge toma una función convergente y una lista de funciones de bifurcación como entrada. Devuelve una nueva función que aplica cada función de bifurcación a los argumentos de entrada. Los resultados de las funciones de bifurcación se pasan luego como argumentos a la función convergente.

Los métodos Array.prototype.map() y Function.prototype.apply() se utilizan para aplicar cada función a los argumentos de entrada. El operador de propagación (...) se utiliza luego para llamar a converger con los resultados de todas las demás funciones.

Aquí está el código para la función converge:

const converge =
  (converger, fns) =>
  (...args) =>
    converger(...fns.map((fn) => fn.apply(null, args)));

Un ejemplo de cómo utilizar esta función se muestra a continuación. La función average se crea llamando a converge con una función anónima que calcula el promedio de una matriz. Las funciones de bifurcación son dos funciones anónimas que calculan la suma de una matriz y su longitud, respectivamente.

const average = converge(
  (a, b) => a / b,
  [(arr) => arr.reduce((a, v) => a + v, 0), (arr) => arr.length]
);
average([1, 2, 3, 4, 5, 6, 7]); // 4

Este código calcula el promedio de la matriz [1, 2, 3, 4, 5, 6, 7] y devuelve 4.

Resumen

¡Felicidades! Has completado el laboratorio de Funciones de Bifurcación Convergente. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.