Aquí hay dos matrices, una es firstName, otra es lastName
{ firstName: ['name1', 'name2'], lastName: ['last1', 'last2'], }pero quiero formatear los datos en una matriz como esta.
{ "name": [{ "firstName": "name1", "lastName": "last1" }, { "firstName": "name2", "lastName": "last2" }, ] }Usando Array#map :
const getNameObj = (data = {}) => { const { firstName = [], lastName = [] } = data; if(firstName.length !== lastName.length) return; const name = firstName.map((fn, i) => ( { firstName: fn, lastName: lastName[i] } )); return { name }; }; console.log( getNameObj({ firstName: [ 'name1', 'name2' ], lastName: [ 'last1', 'last2' ] }) );Puede recorrerlo usando for...in y empujar cada elemento dentro de una nueva array como este ejemplo
const data = { firstName: [ 'name1', 'name2' ], lastName: [ 'last1', 'last2' ], } let newData = []; for (let el in data.firstName){ newData.push({ firstName: data.firstName[el], lastName: data.lastName[el], }) } console.log(newData)Puede usar Array.reduce para obtener el resultado.
const input = { firstName: [ 'name1', 'name2' ], lastName: [ 'last1', 'last2' ], }; const result = input.firstName.reduce((acc, firstName, index) => { acc.name.push({ firstName: firstName, lastName: input.lastName[index] }) return acc }, {'name': []}) console.log(result);