Вы можете использовать Reducer для создания новой версии объекта.
Метод Reduce () выполняет функцию редуктора (которую вы предоставляете) для каждого членамассив, приводящий к единственному выходному значению.
При уменьшении мы сначала передаем функцию, которая выполняется для каждого элемента и возвращает новое выходное значение, затем мы передаем второй параметр, определяющий начальную структуруодно выходное значение.
let data = [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Mike', lastName: 'Smith'}
]
// o = the current output value
// i = the current item in the array
let result = data.reduce((o, i) => {
// Add the first/last names to the corresponding array
o.firstName.push(i.firstName)
o.lastName.push(i.lastName)
// Return the new current output value
return o
}, { firstName: [], lastName: [] }) // Sets the initial output value
console.log(result)