javascript - JavaScript:字典列表(JSON)到 csv
问题描述
我正在对字典列表进行一些操作,最后希望将数据以 csv 的形式保存在浏览器的本地存储中。
我的字典数据列表如下所示:
[{
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"
},
......
]
我希望它像这样保存在浏览器的本地存储中:
谁能帮我将字典列表转换为csv?
解决方案
我认为应该这样做。
const listOfDicts = [...];
const dictionaryKeys = Object.keys(listOfDicts[0]);
const dictValuesAsCsv = listOfDicts.map(dict => (
dictionaryKeys.map(key => dict[key]).join(',')
));
const result = [dictionaryKeys.join(','), ...dictValuesAsCsv].join('\n');
请注意,键的顺序可能不正确,因为您应该首先dictionaryKeys
按正确的顺序排序(如果键是恒定的,您可以替换const dictionaryKeys = Object.keys(listOfDicts[0]);
为const dictionaryKeys = ['key1', 'key2', ...];
)
编辑:
要回答有关值中逗号的问题,您应该进行以下更改
const dictValuesAsCsv = listOfDicts.map(dict => (
dictionaryKeys.map(key => {
if (dict[key].includes(',')) {
return `"${dict[key]}"`;
}
return dict[key];
}).join(',')
));
解释:唯一的区别是你不是简单地 return dict[key]
,而是首先检查它是否包含逗号;如果是,则将其用引号括起来,否则将保持原样。
推荐阅读
- python - 根据python中的正则表达式条件提取句子
- r - 我在 R 中实现 CUSUM 的数学公式出错
- sql - 从第一个表中选择所有行,除了第二个表中的第一次出现
- angular - 尽管在 ngOnDestroy 中进行了清理,但 BehaviorSubject 仍会产生内存泄漏
- regex - Sed:全局替换 - 如何忽略特定行中的特定位置范围
- html - 覆盖元素的高度
- javascript - 根据不同的时间过滤小时
- microsoft-graph-api - 用户如何通过 graph-api Preview URL 查看 PowerPoint 文件中的评论?
- excel - TransferSpreadsheet 导出:缺少 1 行
- mysql - mysqld服务突然宕机,Ubuntu server 16.04