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(数据))