Я не думаю, что есть какой-либо автоматический способ сделать то, что вы хотите, так что просто пройдите по клавишам и создайте новый объект вручную.
let newData = {date: data.date}
data.foo.forEach((value, index) => {
newData["foo_"+(index+1)] = value
})
Вот более общий способ сделать это, вВ случае, если ваши данные более изменчивы.Это просто перебирает все ключи в исходном объекте и либо выравнивает их, как в вашем примере, если они являются массивами, либо копирует их напрямую, если это не так.
function flattenKeys (data) {
let newData = {}
Object.keys(data).forEach(key =>
if (Array.isArray(data[key])) {
data[key].forEach((value, index) => {
// build a new set of keys based on the name of the original
newData[key + "_" + (index+1)] = value
})
} else {
newData[key] = data[key]
}
}
return newData
}