es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo funciona _.forEach en lodash/fp en comparación con lodash?

Este fragmento, que utiliza el método _.forEach de Lodash,

_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
  console.log(key + '=' + value);
})

imprime

none
a=1
b=2

¿Cómo funciona _.forEach en lodash/fp?

Si intento el fragmento anterior en la consola, obtengo

none
ƒ (value, key) {
  console.log(key + '=' + value);
}

lo cual indica que no lo estoy utilizando de la forma adecuada.

Si intento invertir los dos argumentos (ya que esa es una diferencia principal entre lodash y lodash/fp),

_.forEach(function(value, key) {
  console.log(key + '=' + value);
}, { 'a': 1, 'b': 2 })

obtengo

none
undefined=1
undefined=2

Entonces mi pregunta es: ¿existe alguna forma de utilizar _.forEach en un objeto en lodash/fp y tener acceso a las claves y valores del objeto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de _.forEach en un objeto a través de lodash/fp y tener acceso a las claves y valores del objeto. En lodash / fp, las funciones se currifican automáticamente y se les pasa primero el iterador, lo que significa que la función debe ser proporcionada como el primer argumento en lugar del segundo. Por lo tanto, para usar _.forEach en lodash/fp, se utilizaría la siguiente sintaxis:

    const _ = require('lodash/fp');
    const forEach = _.forEach.convert({cap: false});
    
    const obj = { 'a': 1, 'b': 2 };
    
    // la función iteradora debe ser proporcionada como el primer argumento
    const logKeyValue = (value, key) => console.log(key + '=' + value);
    
    // utilizar la función `_.forEach` currificada
    forEach(logKeyValue)(obj);
    

    En el código anterior, primero importamos lodash/fp y luego convertimos la función _.forEach a una versión currificada usando .convert(). Configuramos la opción cap en false para que la función se comporte como iteradora en primer lugar.

    Luego definimos una función logKeyValue que recibe los argumentos value y key y los registra en la consola. Ten en cuenta que hemos invertido el orden de los argumentos en comparación con la versión original de lodash.

    Finalmente, usamos la función _.forEach currificada para iterar sobre nuestro objeto obj, pasando la función logKeyValue como iteradora. Cuando se ejecuta, esto registrará en la consola:

    a=1
    b=2
    

    tal como en el ejemplo original de lodash.

Comments are closed.