Reputation: 459
I've JS list object as:
const data = [
{
arrivalAddress: 'Address',
arrivalLat: '72.989506',
arrivalLon: '19.149307',
arrivalTimeEnd: '8/8/2020 13:37',
arrivalTimeStart: '8/8/2020 13:37',
carrier: 'ABC',
departureAddress: 'abc,sdkfnv',
departureLat: '73.008304',
departureLon: '19.114599',
departureTime: '8/8/2020 13:37',
hazardousGoods: 'TRUE',
id: '1',
receiver: 'Tom',
sender: 'Jack',
tourID: 'abc',
vehicleClass: 'eu_heavy'
},
{
arrivalAddress: 'Address',
arrivalLat: '72.989506',
arrivalLon: '19.149307',
arrivalTimeEnd: '8/8/2020 13:37',
arrivalTimeStart: '8/8/2020 13:37',
carrier: 'ABC',
departureAddress: 'abc,sdkfnv',
departureLat: '73.008304',
departureLon: '19.114599',
departureTime: '8/8/2020 13:37',
hazardousGoods: 'TRUE',
id: '1',
receiver: 'Tom',
sender: 'Jack',
tourID: 'abc',
vehicleClass: 'eu_heavy'
}
// ...
]
I want to convert above data
as csv, So I tried below code:
let dictionaryKeys = Object.keys(data[0]);
let dictValuesAsCsv = data.map(dict => (
dictionaryKeys.map(key => dict[key]).join(',')
));
//console.log(dictValuesAsCsv);
let resultA = [dictionaryKeys.join(','), dictValuesAsCsv].join('\n');
console.log(resultA);
And It's working fine but the rows are not getting in new line, all rows are in the same line:
id,departureLat,departureLon,departureAddress,arrivalLat,arrivalLon,arrivalAddress,departureTime,arrivalTimeStart,arrivalTimeEnd,tourID,vehicleClass,hazardousGoods,carrier,sender,receiver
1,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,2,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,3,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,4,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,5,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,6,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,7,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,8,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom,9,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
As you can see all rows are in same line
I want output as:
id,departureLat,departureLon,departureAddress,arrivalLat,arrivalLon,arrivalAddress,departureTime,arrivalTimeStart,arrivalTimeEnd,tourID,vehicleClass,hazardousGoods,carrier,sender,receiver
1,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
2,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
3,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
4,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
5,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
6,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
7,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
8,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
9,73.008304,19.114599,abc,sdkfnv,72.989506,19.149307,Mindspace,Airoli,8/8/2020 13:37,8/8/2020 13:37,8/8/2020 13:37,abc,eu_heavy,TRUE,ABC,Jack,Tom
data = [{
arrivalAddress: "Address",
arrivalLat: "72.989506",
arrivalLon: "19.149307",
arrivalTimeEnd: "8/8/2020 13:37",
arrivalTimeStart: "8/8/2020 13:37",
carrier: "ABC",
departureAddress: "abc,sdkfnv",
departureLat: "73.008304",
departureLon: "19.114599",
departureTime: "8/8/2020 13:37",
hazardousGoods: "TRUE",
id: "1",
"receiver ": "Tom",
sender: "Jack",
tourID: "abc",
vehicleClass: "eu_heavy",
}, {
arrivalAddress: "Address",
arrivalLat: "72.989506",
arrivalLon: "19.149307",
arrivalTimeEnd: "8/8/2020 13:37",
arrivalTimeStart: "8/8/2020 13:37",
carrier: "ABC",
departureAddress: "abc,sdkfnv",
departureLat: "73.008304",
departureLon: "19.114599",
departureTime: "8/8/2020 13:37",
hazardousGoods: "TRUE",
id: "1",
"receiver ": "Tom",
sender: "Jack",
tourID: "abc",
vehicleClass: "eu_heavy",
},
]
let dictionaryKeys = Object.keys(data[0]);
let dictValuesAsCsv = data.map(dict => (
dictionaryKeys.map(key => dict[key]).join(',')
));
//console.log(dictValuesAsCsv);
let resultA = [dictionaryKeys.join(','), dictValuesAsCsv].join('\n');
console.log(resultA);
Upvotes: 2
Views: 55
Reputation: 14891
You are going right way, but you have to spread (doc for spread operator) dictValuesAsCsv
let resultA = [dictionaryKeys.join(','), ...dictValuesAsCsv].join('\n');
// would lead to [keys, row, row, row,...]
// instead of [keys, [row, row, row,...]]
Full code
const data = [
{
arrivalAddress: 'Address',
arrivalLat: '72.989506',
arrivalLon: '19.149307',
arrivalTimeEnd: '8/8/2020 13:37',
arrivalTimeStart: '8/8/2020 13:37',
carrier: 'ABC',
departureAddress: 'abc,sdkfnv',
departureLat: '73.008304',
departureLon: '19.114599',
departureTime: '8/8/2020 13:37',
hazardousGoods: 'TRUE',
id: '1',
receiver: 'Tom',
sender: 'Jack',
tourID: 'abc',
vehicleClass: 'eu_heavy'
},
{
arrivalAddress: 'Address',
arrivalLat: '72.989506',
arrivalLon: '19.149307',
arrivalTimeEnd: '8/8/2020 13:37',
arrivalTimeStart: '8/8/2020 13:37',
carrier: 'ABC',
departureAddress: 'abc,sdkfnv',
departureLat: '73.008304',
departureLon: '19.114599',
departureTime: '8/8/2020 13:37',
hazardousGoods: 'TRUE',
id: '1',
receiver: 'Tom',
sender: 'Jack',
tourID: 'abc',
vehicleClass: 'eu_heavy'
}
]
let dictionaryKeys = Object.keys(data[0]);
let dictValuesAsCsv = data.map(dict => (
dictionaryKeys.map(key => dict[key]).join(',')
));
//console.log(dictValuesAsCsv);
let resultA = [dictionaryKeys.join(','), ...dictValuesAsCsv].join('\n');
console.log(resultA);
Upvotes: 3