Если я правильно понимаю, этот код, который я сделал для вас, должен помочь вам преобразовать старый формат в новый.
const geolocations = {
routeId1: [
{ trackingId: 1, timeStamp: 1, accuracy: 1, longitude: 1, latitude: 1, uId: 1 },
{ trackingId: 1, timeStamp: 2, accuracy: 2, longitude: 2, latitude: 2, uId: 2 },
{ trackingId: 2, timeStamp: 1, accuracy: 3, longitude: 3, latitude: 3, uId: 3 },
{ trackingId: 2, timeStamp: 2, accuracy: 4, longitude: 4, latitude: 4, uId: 4 }
],
routeId2: [
{ trackingId: 3, timeStamp: 1, accuracy: 5, longitude: 5, latitude: 5, uId: 5 },
{ trackingId: 4, timeStamp: 1, accuracy: 6, longitude: 6, latitude: 6, uId: 6 },
{ trackingId: 4, timeStamp: 2, accuracy: 7, longitude: 7, latitude: 7, uId: 7 },
{ trackingId: 4, timeStamp: 3, accuracy: 8, longitude: 8, latitude: 8, uId: 8 }
]
};
const newGeolocations = {};
const routesIds = Object.keys(geolocations);
for (const routeId of routesIds) {
const route= geolocations[routeId];
if (!newGeolocations.hasOwnProperty(route)) {
newGeolocations[routeId] = {}
}
for (const loc of route) {
if (!newGeolocations[routeId].hasOwnProperty(loc.trackingId)) {
newGeolocations[routeId][loc.trackingId] = []
}
newGeolocations[routeId][loc.trackingId].push({
accuracy: loc.accuracy,
longitude: loc.longitude,
latitude: loc.latitude,
timeStamp: loc.timeStamp,
uId: loc.uId
});
}
}
console.log(JSON.stringify(newGeolocations));
Это результат, который я получаю в консоли,
{
"routeId1":
{"1":[
{"accuracy":1,"longitude":1,"latitude":1,"timeStamp":1,"uId":1},
{"accuracy":2,"longitude":2,"latitude":2,"timeStamp":2,"uId":2}
],
"2":[
{"accuracy":3,"longitude":3,"latitude":3,"timeStamp":1,"uId":3},
{"accuracy":4,"longitude":4,"latitude":4,"timeStamp":2,"uId":4}
]},
"routeId2":{
"3":[
{"accuracy":5,"longitude":5,"latitude":5,"timeStamp":1,"uId":5}
],
"4":[
{"accuracy":6,"longitude":6,"latitude":6,"timeStamp":1,"uId":6},
{"accuracy":7,"longitude":7,"latitude":7,"timeStamp":2,"uId":7},
{"accuracy":8,"longitude":8,"latitude":8,"timeStamp":3,"uId":8}
]}
}
Дайте мне знать, поможет ли это вам.