Dado un objeto que se ve así:
let obj = { mytest: [{ mytest2: 123 }] }
Hubiera pensado que podría usar la cadena implícita así:
_(obj).get('mytest').map('mytest2').value();
Pero me sale un error:
VM922:1 Uncaught TypeError: mytest2 is not a function at Array.map (<anonymous>) at <anonymous>:1:22 (anonymous) @ VM922:1
Parece esperar que el parámetro del map
sea una función. Si uso el método de chain
explícito, parece que funciona.
_.chain(obj).get('mytest').map('mytest2').value(); [123]
¿Que está pasando aqui? Estoy usando lodash 4.17.15.
El _(obj)
no es una "cadena implícita", es un objeto de uso único que envuelve un valor para hacer que las funciones de lodash estén disponibles con la sintaxis del método. _(obj).get('mytest')
es lo mismo que _.get(obj, 'mytest')
y devuelve la matriz sin [{ mytest2: 123 }]
. El método .map
al que está llamando no es _.map
, es el método de map
de matriz que requiere un argumento de función. Tampoco necesitaría llamar a .value()
en el valor de retorno.