Javascript 将不同对象的数组添加到.CSV

Javascript 将不同对象的数组添加到.CSV,javascript,csv,Javascript,Csv,我正在尝试做一些简单的事情,我想把一个对象数组推到一个.csv文件中,我遇到的问题是,这些对象的密钥不尽相同。我正在使用此导出到csv库,但没有承诺使用它 以下是我目前正在做的事情: exportBudget() { this.tester() const options = { fieldSeparator: ',', quoteStrings: '"', decimalSeparator: '.', showLabels: true,

我正在尝试做一些简单的事情,我想把一个对象数组推到一个.csv文件中,我遇到的问题是,这些对象的密钥不尽相同。我正在使用此导出到csv库,但没有承诺使用它

以下是我目前正在做的事情:

exportBudget() {
  this.tester()


  const options = { 
    fieldSeparator: ',',
    quoteStrings: '"',
    decimalSeparator: '.',
    showLabels: true, 
    showTitle: true,
    title: 'My Awesome CSV',
    useTextFile: false,
    useBom: true,
    useKeysAsHeaders: true,

  };

  const csvExporter = new ExportToCsv(options);
  csvExporter.generateCsv(this.test);
  },
下面是tester()函数:

    tester(){
  for(var i=0; i<this.rows.length;i++){
      var data = {Marketing: this.rows[i].toString(), Canada: this.records[i].details[0].value, USA: this.records[i].details[1].value, UK: this.records[i].details[2].value, Europe: this.records[i].details[3].value, Australia:this.records[i].details[4].value, RestofWorld:this.records[i].details[5].value}
      this.test.push(data);
      };
  for(var i=0; i<this.addSpend.length;i++){
    var data = {Marketing: this.addSpend[i].marketDet, Territory: this.addSpend[i].territory, Vendor: this.addSpend[i].vendor, Vendor_Description: this.addSpend[i].description, Amount: this.addSpend[i].amount, Date: this.addSpend[i].date}
    this.test.push(data);
      };
},
tester(){

对于(var i=0;i,正如@Icepickle所建议的那样,将数据作为数组而不是对象数组推送给我更多的自由来操作数据。我最终需要做的就是:

     this.test.push([this.rows[i].toString(), this.records[i].details[0].value, this.records[i].details[1].value,  this.records[i].details[2].value,  this.records[i].details[3].value, this.records[i].details[4].value,this. records[i].details[5].value]);
因此,如果您的数据是以数组的形式出现的,那么只需将对象解析为数组即可,现在我的数据如图所示:

正如@Icepickle所建议的那样,将数据作为数组而不是对象数组推送给我更多的自由来操作数据。我最终需要做的就是:

     this.test.push([this.rows[i].toString(), this.records[i].details[0].value, this.records[i].details[1].value,  this.records[i].details[2].value,  this.records[i].details[3].value, this.records[i].details[4].value,this. records[i].details[5].value]);
因此,如果您的数据是以数组的形式出现的,那么只需将对象解析为数组即可,现在我的数据如图所示:

数据似乎并不相互关联,为什么只为输出创建一个csv文件?如果需要一个文件,您可以在第一行添加所有列吗?@Icepickle感谢您的响应。它确实需要一个csv,数据在某种程度上是相关的。此csv的目的是让用户输出数据以共享/manipulate。至于你的第二个建议,我确实尝试过(如果我理解正确的话),我将第1行设置为所有列标题。这不起作用,因为某些原因,当我推AddExpense进行测试时,它在csv中显示为“未定义”(如果我单独执行,它会显示为良好)。除此之外,标题将位于第一行,数据将进一步向下,这不太理想。然后您可以禁用显示标题,并手动添加标题?可能只是推原始数组值而不是对象?您可以链接到您似乎正在使用的
ExportToCsv
库中,它们可能是ome文档吗?@Icepickle是的,我试图手动放入标题并创建相同的问题。我将尝试单独推送数组。这是github存储库;@Icepickle嘿,只是想让你知道将其推送为数组“有效”",它需要一些半粗略/糟糕的语法,但它对我来说是有用的。谢谢你的建议,我很感激!数据似乎彼此并不相关,为什么只为输出创建一个csv文件?如果需要一个文件,你能在第一行添加所有列吗?@Icepickle感谢你的回复。它确实需要作为一个csv,数据在某种程度上是相关的。这个csv的目的是让用户输出数据以共享/操作。至于你的第二个建议,我确实尝试过(如果我理解正确的话),我将第1行设置为所有列标题。由于某种原因,当我推AddExpense进行测试时,它会显示出来csv中的“未定义”(如果我单独执行,则显示良好)。除此之外,标题将位于第一行,数据将进一步向下,这不太理想。然后您可以禁用显示标题,并手动添加标题?可能只是推原始数组值而不是对象?您可以链接到您似乎正在使用的
ExportToCsv
库中,它们可能是ome文档吗?@Icepickle是的,我试图手动放入标题并创建相同的问题。我将尝试单独推送数组。这是github存储库;@Icepickle嘿,只是想让你知道,将其作为数组推送“有效”,它需要一些半粗俗/糟糕的语法,但它对我的目的是有用的。谢谢你的建议,我很感激!