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

181
Vistas
programación funcional lodash cómo hacer una aplicación parcial en _flow

Estoy usando el último lodash, el siguiente código funciona, pero me gustaría eliminar la parte x => , ahora me veo obligado a usarlo porque no puedo usar una aplicación parcial con _.orderBy

 const x = (r, f, o) => _.flow([_.cloneDeep, x => _.orderBy(x, [r], [o])])(r);

¿Tiene alguna idea de cómo cambiar el código para que

 const x = (r, f, o) => _.flow([_.cloneDeep, _.orderBy([r], [o])])(r);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede usar _.rearg() y _.curry() para obtener una nueva función que acepte los datos ( x ) como el último parámetro y devuelva una nueva función si recibe menos de 3 argumentos:

 const orderByCurried = _.curry(_.rearg(_.orderBy, [2, 0, 1]), 3); const fn = (r, f, o) => orderByCurried([f], [o])(r);

No es más corta que una función de flecha x => , pero si la usas mucho...

Nota : _.orderBy() no afecta la matriz original, por lo que no necesita clonarlo primero.

Ejemplo (adaptado de la respuesta de VLAZ):

 const orderByCurried = _.curry(_.rearg(_.orderBy, [2, 0, 1]), 3); const fn = (r, f, o) => orderByCurried([f], [o])(r); const users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; const sorted = fn(users, 'age', 'asc'); console.log(sorted); console.log(users);
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Otra opción es cambiar a lodash/fp, que tiene todas las funciones con los argumentos en el orden correcto, y todas están curradas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma más fácil de realizar esta tarea es usar Lodash FP , la compilación amigable con la programación funcional de Lodash. Expone las mismas funciones pero reorganiza los argumentos para mover los datos para que queden al final y luego los procesa automáticamente. Es más conveniente ya que simplifica muchas tareas de programación funcional y no necesita cambiar su código (aparte de usar la compilación correcta):

 const x = (r, f, o) => _.flow([_.cloneDeep, _.orderBy([f], [o])])(r); const users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; console.log(x(users, 'age', 'asc')); console.log(users); //unchanged
 <script src="https://cdn.jsdelivr.net/g/lodash@4(lodash.min.js+lodash.fp.min.js)"></script>

Si se encuentra en un entorno de módulos, puede seleccionar y elegir fácilmente las importaciones que utiliza:

 import flow from 'lodash/flow'; import cloneDeep from 'lodash/cloneDeep'; // or import { flow, cloneDeep } from 'lodash'; import orderBy from 'lodash/fp/orderBy'; // or import { orderBy } from 'lodash/fp';

Pero si solo tiene la compilación normal de Lodash, entonces puede usar la respuesta de Ori Drori para hacer el mismo tipo de modificación que hace Lodash FP.

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