tengo esta matriz
[ [ [ 'id', 'name' ], [ '1', 'A' ] ], [ [ 'id', 'name' ], [ '2', 'B' ] ], [ [ 'id', 'name' ], [ '3', 'C' ] ] ]y quiero que sea una matriz de objetos con el valor correspondiente
[{id: 1, name: 'A'}, {id:2, name: 'B'}, {id:3, name: 'C'}]gracias
Puede usar cualquier función de orden superior en js como map, for, reduce. A continuación se muestra la implementación con Array.reduce
const arr = [ [ ['id', 'name'], ['1', 'A'], ], [ ['id', 'name'], ['2', 'B'], ], [ ['id', 'name'], ['3', 'C'],], ]; const response = arr.reduce((acc, curr) => { const [firstItem, secondItem] = curr; const [id, name] = firstItem; const [val1, val2] = secondItem; acc.push({ [id]: val1, [name]: val2 }); return ACC; }, []); console.log(response)Podría transponer las matrices internas y mapear nuevos objetos.
const transpose = (a, b) => b.map((v, i) => [...(a[i] || []), v]), data = [[['id', 'name'], ['1', 'A'] ], [['id', 'name'], ['2', 'B']], [['id', 'name'], ['3', 'C']]], result = data.map(a => Object.fromEntries(a.reduce(transpose, []))); console.log(result); .as-console-wrapper { max-height: 100% !important; top: 0; }Usando Array#map iterar sobre la matriz.
Para cada subarreglo, tendrá una lista de keys y una lista de values . Usando Array#reduce , puede iterar sobre keys para calcular un objeto con la ayuda del tercer parámetro, el índice, para obtener cada valor correspondiente:
const data = [ [ [ 'id', 'name', 'age' ], [ '1', 'A', 22 ] ], [ [ 'id', 'name' ], [ '2', 'B' ] ], [ [ 'id', 'name' ], [ '3', 'C' ] ] ]; const arr = data.map(([ keys, values = [] ]) => keys.reduce((obj, key, i) => ({ ...obj, [key]: values[i] }), {}) ); console.log(arr);