56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
|
import fs from "fs";
|
||
|
import * as path from "path";
|
||
|
|
||
|
const stations = [
|
||
|
{
|
||
|
id: 1,
|
||
|
name: 'Tesla Supercharger',
|
||
|
address: '123 Main St',
|
||
|
lat: 37.7749,
|
||
|
lon: -122.4194,
|
||
|
network_operator: 'Tesla'
|
||
|
},
|
||
|
{
|
||
|
id: 2,
|
||
|
name: 'Electrify America',
|
||
|
address: '456 Maple Ave',
|
||
|
lat: 40.7128,
|
||
|
lon: -74.0060,
|
||
|
network_operator: 'Electrify America'
|
||
|
},
|
||
|
{id: 3, name: 'ChargePoint', address: '789 Oak St', lat: 34.0522, lon: -118.2437, network_operator: 'ChargePoint'},
|
||
|
];
|
||
|
|
||
|
interface Station {
|
||
|
[key: string]: string
|
||
|
}
|
||
|
|
||
|
function groupStationsByNetworkOperator(stations: Station[]): Map<string, Station[]> {
|
||
|
const groups
|
||
|
= new Map<string, Station[]>();
|
||
|
|
||
|
for (const station of stations) {
|
||
|
if (!groups.has(station.properties.network_operator)) {
|
||
|
groups.set(station.properties.network_operator, []);
|
||
|
}
|
||
|
|
||
|
groups.get(station.properties.network_operator)!.push(station);
|
||
|
}
|
||
|
|
||
|
return groups;
|
||
|
}
|
||
|
|
||
|
|
||
|
function groupStationsByNetworkOperatorAndWriteToFiles(stations: any[], outputDir: string): void {
|
||
|
const groups = groupStationsByNetworkOperator(stations);
|
||
|
|
||
|
for (const [networkOperator, stationsForOperator] of groups.entries()) {
|
||
|
const fileName = `${networkOperator}.json`;
|
||
|
const filePath = path.join(outputDir, fileName);
|
||
|
|
||
|
fs.writeFileSync(filePath, JSON.stringify(stationsForOperator, null, 2));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
groupStationsByNetworkOperatorAndWriteToFiles(stations, "output")
|