Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

110
Vistas
Currying y reducir en javascript

¿Por qué al principio obtengo 80, luego 88 y luego 90? ¿Alguien puede explicar en detalle lo que está sucediendo en la función de compose ?

 const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args))); const sum = a => b => a + b const multiply = a => b => a * b const addTransactionFee = sum(2) const addTax = multiply(1.1) const addMonthlyPromotion = multiply(0.8) const log = a => { console.log(a) return a } const paymentAmount = compose( log, addTransactionFee, log, addTax, log, addMonthlyPromotion )(100)

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En su lugar, puede utilizar la recursividad. De esta forma se conserva (y no se invierte) el orden de las funciones.

 const recursion = (value, func, ...fns) => func ? recursion(func(value), ...fns) : value; const paymentAmount = (amount) => recursion( amount, log, addTransactionFee, log, addTax, log, addMonthlyPromotion, log );
about 4 years ago · Juan Pablo Isaza Denunciar

0

La función de composición con el ciclo de reduce... tome la función correcta (la última ( addMonthlyPromotion() )) y obtenga el resultado de 100 * 0.8 para que tenga 80 en el primer ciclo. Luego tienes el segundo ciclo con la segunda función ( addTax() ) multiplica el resultado anterior de (80) con 1.1 entonces 88. Y el ciclo final y el tercero de reducir con la función ( addTransactionFee() ) agrega 2 en su número anterior por lo que 90.

Ahora la función de composición va de derecha a izquierda de la función en bucle y realiza los cálculos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda