Estoy trabajando con javascript por primera vez y tengo una matriz de alrededor de 35000 objetos, donde cada objeto se ve así: {city: 'city1', buildingtype: 'buildingtype1', day: 1, hour: 1, energy: 59}
Quiero ordenar estos datos en un objeto JSON "anidado" , con ciudades como el primer objeto. Para cada ciudad, necesito ordenar por tipo de edificio, y para cada tipo de edificio quiero una matriz con la energía, ordenada por tiempo.
He agregado una imagen aquí que podría explicarlo un poco mejor: 
He comenzado con algo como esto.
let transformed_data = {} $:{ datapoints.forEach((d)=> { if(!(d.city in transformed_data)){ transformed_data[city] = {}; } } ) }¿Sería esta una buena manera de avanzar?
Editar: gracias a una buena ayuda, esta es la solución que encontré, donde usé que los datos ya estaban ordenados a mi favor.
let transformed_data = {} $:{ datapoints.forEach((d)=> { if(!(d.city in transformed_data)){ transformed_data[d.city] = {}; } if (!(d.buildingtype in transformed_data[d.city])){ transformed_data[d.city][d.buildingtype] = []; } transformed_data[d.city][d.buildingtype].push(d.total_heating_energy) } ) }El objeto resultante se puede encontrar aquí: Final_result