Javascript 创建有问题的CSV,seperator
我面临着一个问题,Javascript 创建有问题的CSV,seperator,javascript,node.js,arrays,csv,Javascript,Node.js,Arrays,Csv,我面临着一个问题,,用于csv生成的分隔符,工作正常。但是,当数据中有,时,就会把整个csv结构搞得一团糟。例如,当我有2020年7月16日06:16美国东部夏令时的数据时,它就完全搞砸了 这是数据 const data = [ { NAME: "Peter George", EMAIL: "peter.george@example.com", "CARD NUMBER/PIN": "28860&q
,
用于csv生成的分隔符,工作正常。但是,当数据中有,
时,就会把整个csv结构搞得一团糟。例如,当我有2020年7月16日06:16美国东部夏令时的数据时,它就完全搞砸了
这是数据
const data = [
{
NAME: "Peter George",
EMAIL: "peter.george@example.com",
"CARD NUMBER/PIN": "28860",
VALIDITY: "Jul 14, 2020 EDT - Never",
"CARD STATUS": "Active",
"LAST USED ON": "",
"LAST USED ON (ISO)": "",
"CARD TYPE": "CARD",
"FORMAT NAME": "FC 61 - 26 bits format",
},
{
NAME: "Harold Duncan",
EMAIL: "harold.duncan@example.com",
"CARD NUMBER/PIN": "1111",
VALIDITY: "Jul 14, 2020 EDT - Never",
"CARD STATUS": "Active",
"LAST USED ON": "Jul 16, 2020 09:38 EDT",
"LAST USED ON (ISO)": "2020-07-16T09:38:02-04:00",
"CARD TYPE": "CARD",
"FORMAT NAME": "FC 61 - 26 bits format",
},
{
NAME: "Samantha Willis",
EMAIL: "samantha.willis@example.com",
"CARD NUMBER/PIN": "22241",
VALIDITY: "Jul 14, 2020 EDT - Never",
"CARD STATUS": "Active",
"LAST USED ON": "Jul 16, 2020 06:16 EDT",
"LAST USED ON (ISO)": "2020-07-16T06:16:00-04:00",
"CARD TYPE": "CARD",
"FORMAT NAME": "FC 61 - 26 bits format",
},
];
这是我用来把它转换成csv的函数
function ArrayOfObjectsToCSV(
data,
columnDelimiter = ",",
lineDelimiter = "\n"
) {
let result;
let ctr;
if (data == null || !data.length) {
return null;
}
const keys = Object.keys(data[0]);
result = keys.join(columnDelimiter) + lineDelimiter;
data.forEach((item) => {
ctr = 0;
keys.forEach((key) => {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr += 1;
});
result += lineDelimiter;
});
return result;
}
因此,我将从中获得此输出csv
但我希望这是一个输出:
实际上没有办法绕过这个问题,但您可以在逗号之前添加反斜杠,这样它就可以用作字符串。 根据CSV规则,带有嵌入逗号或双引号字符的字段必须加引号 e、 g
1997年,福特,E350,超级,豪华卡车请尝试以下解决方案
const数据=[
{
姓名:“彼得·乔治”,
电子邮件:“彼得。george@example.com",
“卡号/PIN”:“28860”,
有效期:“美国东部夏令时2020年7月14日-永不”,
“卡状态”:“活动”,
“上次使用日期”:“,
“上次使用日期(ISO)”:“”,
“卡片类型”:“卡片”,
“格式名称”:“FC 61-26位格式”,
},
{
姓名:“哈罗德·邓肯”,
电子邮件:“哈罗德。duncan@example.com",
“卡号/密码”:“1111”,
有效期:“美国东部夏令时2020年7月14日-永不”,
“卡状态”:“活动”,
“最后一次使用日期”:“美国东部夏令时2020年7月16日09:38”,
“上次使用日期(ISO)”:“2020-07-16T09:38:02-04:00”,
“卡片类型”:“卡片”,
“格式名称”:“FC 61-26位格式”,
},
{
姓名:“萨曼莎·威利斯”,
电子邮件:“萨曼莎。willis@example.com",
“卡号/密码”:“22241”,
有效期:“美国东部夏令时2020年7月14日-永不”,
“卡状态”:“活动”,
“最后使用日期”:“2020年7月16日06:16美国东部夏令时”,
“上次使用日期(ISO)”:“2020-07-16T06:16:00-04:00”,
“卡片类型”:“卡片”,
“格式名称”:“FC 61-26位格式”,
},
];
函数arrayOfObjectsToCSV(数据,分隔符=“,”,lineDelimiter=“\n”){
const columnNames=Object.keys(数据[0]).join(分隔符);
const values=data.map((条目)=>Object.values(条目).join(分隔符));
返回columnNames+“\n”+值;
}
log(arrayOfObjectsToCSV(数据))代码>