如何在使用javascript写入CSV时跳到新行

如何在使用javascript写入CSV时跳到新行,javascript,node.js,export-to-csv,Javascript,Node.js,Export To Csv,我有一个对象数组,比如array=[hello,how,are,you],这是我从document.innerHTML中提取的。我需要使用puppeter和JavaScript一个接一个地将它们写入CSV文件。 如果我使用普通的fs.writeFile(),它会像这样打印出来 hello how are you 但是,我希望它写在文件中,一个在另一个的下面 hello how are you 我怎么可能做到这一点? 每次输入后如何转到新行 注意: 1) 请注意,这是一个对象的数组,而不是字符

我有一个对象数组,比如
array=[hello,how,are,you]
,这是我从document.innerHTML中提取的。我需要使用puppeter和JavaScript一个接一个地将它们写入CSV文件。
如果我使用普通的fs.writeFile(),它会像这样打印出来

hello how are you
但是,我希望它写在文件中,一个在另一个的下面

hello
how
are
you
我怎么可能做到这一点? 每次输入后如何转到新行

注意:

1) 请注意,这是一个对象的数组,而不是字符串。

2) 如果我将数组更改为string,然后写入该文件,就可以了

这是我到目前为止编写的代码

for(var k=0; k<value.length; k++){
  data=value[k]
  fs.writeFile('export1.csv', data, (err) => {
    if (err) throw err;
    console.log('The file has been saved!');
    
  });
for(var k=0;k{
如果(错误)抛出错误;
log('文件已保存!');
});
额外学分:


有什么办法可以让我停止在同一个专栏中写作而转到一个新的专栏吗?并切换回?

根据您的描述,我相信下面就是您要寻找的:

const fs = require('fs');

const array = [
    {
      a: 1,
      b: 2
    },
    {
      c: 3,
      d: 4
    }
];

const dataToSave = array.map(item => {
    return JSON.stringify(item)
      .replace(/\"/gi, '""');
  })
  .map(item => `"${item}"`)
  .join('\n');

fs.writeFile('export1.csv', dataToSave, (err) => {
    if (err) throw err;
    console.log('The file has been saved!');    
});
使用CSV和对象有点复杂,因为CSV和JSON字符串都使用引号和逗号来删除内容。在上面的例子中,数组中的对象被JSON字符串化,然后引号
被转义为
。此外,数组项随后被括在引号
中,最后用新行转义字符
\n
连接起来

如果您在Windows的计算机上,您可能希望执行
\r
而不是
\n
。无论您使用什么方法打开.csv,比如Excel,都应该足够智能,能够计算出行尾,无论它是
\n
还是
\r

对于额外的积分,请使用逗号(
)移动到另一列。CSV代表“逗号分隔值”,因此逗号是分隔符,用于将文本分隔为离散的部分,每个部分显示在单独的列中。例如,您可以替换:

.map(item => `"${item}"`)
与:

如果你想做比这更复杂的事情,我会研究:

参考资料:

  • 数组
    .map()
  • 字符串
    .replace()
  • JSON.stringify()
  • 新行字符
    \n

作为将来的参考,字符串是对象(它们是
String
类的实例)。您能否澄清您希望如何将对象添加到文件中?是否要将对象编写为JSON?您想使用的对象是否有特定字段?@Moutah我只想将文本数组写入CSV。仅此而已。类型真的不重要。但是你说你有一个对象数组。你能提供关于这些对象的更多细节或数组的示例吗?我不太了解你的情况。试着用这个软件包-。。我想这就是你想要实现的目标。
.map(item => `,"${item}"`) // Comma added here