¿Cuál es la función inversa del método _.invertBy() de lodash?
Quiero hacer un viaje de ida y vuelta y convertir un objeto más tarde a la misma forma después de invertirlo. Pero si lo hago
> _.invertBy({apple: 'fruit', pear: 'fruit'}) { fruit: [ 'apple', 'pear' ] } > _.invertBy({ fruit: [ 'apple', 'pear' ] }) { 'apple,pear': [ 'fruit' ] } y { 'apple,pear': [ 'fruit' ] } no es lo mismo que {apple: 'fruit', pear: 'fruit'} .
Uno puede piratear el código fuente de invertBy de github y obtener algo como
function invertBackBy(object, iteratee = _.identity) { const result = {} Object.keys(object).forEach((key) => { object[key].map(iteratee).forEach((value) => { result[value] = key }) }) return result }o si lo que querías era una sola línea lodash, creo que no hay nada más simple que
oinv => _.reduce(oinv, (acc, values, key) => _.assign(acc, _.fromPairs(_.map(values, value => [value, key]))), {})ver violín para un ejemplo.