Tengo 2 arreglos como este
const dates = ["2019", "2020", "2021"]; const data = [[100, 200, 300, 20], [400, 500, 600, 30], [700, 800, 900, 40]];Quiero fusionar estas 2 matrices en una matriz de objetos como este Detalles: El primer objeto de la matriz de resultados tendrá los valores del primer elemento de cada matriz en la matriz 2d Lo mismo ocurre con el resto de las matrices de resultados
const result = [ { 2019: 100, 2020: 400, 2021: 700 }, { 2019: 200, 2020: 500, 2021: 800 }, { 2019: 300, 2020: 600, 2021: 900 }, { 2019: 20, 2020: 30, 2021: 40 } ]Le recomendaría que primero transpose sus filas data y luego puede escribir table usando Array.prototype.map y Object.fromEntries -
const transpose = t => t.some(a => Boolean(a.length)) ? [t.map(a => a[0]), ...transpose(t.map(a => a.slice(1)))] : [] const table = (columns, rows) => transpose(rows).map(r => Object.fromEntries(columns.map((c,i) => [c, r[i]] )) ) const dates = ["2019", "2020", "2021"] const data = [[100, 200, 300, 20], [400, 500, 600, 30], [700, 800, 900, 40]] console.log(table(dates, data))Tal vez puedas probar esto:
const dates = ["2019", "2020", "2021"]; const data = [[100, 200, 300, 20], [400, 500, 600, 30], [700, 800, 900, 40]]; const res=data[0].reduce((a,_,j,da)=>{ a.push(Object.fromEntries(dates.map((d,i)=>[d,data[i][j]]))) return a; },[]); console.log(res)