Tengo un Record<string, number[][]> y trato de realizar un cálculo sobre estos valores.
Una entrada de ejemplo:
const input1 = { key1: [ [2002, 10], [2003, 50], ], }; const input2 = { key1: [ [2002, 20], [2003, 70], ], }; const input3 = { key1: [ [2002, 5], [2003, 60], ], };Para cada clave, y para el año específico, quiero hacer lo siguiente
year => input1 + input2 - input3 // output: 2002 => 25, 2003 => 60Para esto he estado jugando con lodash/fp.
map(a => a.map(nth(1)))(map('key1')([input1, input2])) // [[10, 50], [20, 70], [5, 60]]¿Hay alguna manera de pasar de alguna manera las entradas e iterar sobre ellas, y de alguna manera obtener una función de devolución de llamada para obtener los valores para realizar el cálculo?
Probé zip , zipWith pero no llegué a ninguna parte con ellos.
¿Alguna pista de lo que puedo hacer en este caso?
Gracias por tu ayuda.
Puede obtener un objeto con el método _.fromPairs y luego usar _.mergeWith para sumar y restar.
const input1 = { key1: [ [2002, 10], [2003, 50], ], }; const input2 = { key1: [ [2002, 20], [2003, 70], ], }; const input3 = { key1: [ [2002, 5], [2003, 60], ], }; const [one, two, three] = _.map([input1, input2, input3], ({key1 }) => _.fromPairs(key1)) const add = _.mergeWith(one, two, (a, b) => a + b) const sub = _.mergeWith(add, three, (a, b) => a - b) console.log(add) <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>