将数据集转换为正确的CSV表示法以使用JavaScript下载 [英] Converting dataset into proper CSV notation for downloading using JavaScript

查看:70
本文介绍了将数据集转换为正确的CSV表示法以使用JavaScript下载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有以下数据集:

this.set1 // == [111000, 111000, 110000, 110000, 109000]
this.set2 // == [2.073921204, 2.156188965, 2.210624695, 2.210624695, 2.286842346]
this.set3 // == [527.6497192, 522.3652954, 529.675415, 529.675415, 533.8148804]
this.set4 // == [530.6442261, 524.7432861, 532.2295532, 532.2295532, 536.545166]
this.set5 // == [80.73879242, 80.92513275, 80.95175934, 80.95175934, 80.79203796]

我尝试了以下代码将这些数据转换为所需的CSV数据:

I tried the following code to convert this data to my needed CSV data:

// Reference to pulled-data arrays
let data = [
  this.set1
  this.set2
  this.set3
  this.set4
  this.set5
];

// Convert data arrays to CSV format
const CSVURL = 'data:text/csv;charset=UTF-8,';
let formattedData = data.map(e => e.join(',')).join('\n');
let encodedData = CSVURL + encodeURIComponent(formattedData);

// Generic download CSV function
downloadFile('name.csv', encodedData);

但是,这会输出以下格式的CSV文件:

However, this outputted a CSV file of the following format:

我如何将数据转换为CSV格式?

How would I convert the data to this format for use in CSV?:

编辑:与其他帖子的相似之处只是部分.请参阅评论以获取完整解决方案.

The similarities to the other post were only partial. See comments for full solution.

推荐答案

利用@Heretic Monkey(用于转置数据)和@codeWonderland(用于添加类别名称)的部分建议,我得出了以下解决方案:

Utilizing partial advice given by @Heretic Monkey (for transposing the data) and @codeWonderland (for adding category names), I have arrived at the following solution:

// Reference to pulled-data arrays
let data = [
  this.set1
  this.set2
  this.set3
  this.set4
  this.set5
];

// NEW
// Reference to data array names in same order as aforementioned data array
const dataNames = [
  'set1',
  'set2',
  'set3',
  'set4',
  'set5',
]

// NEW
// Add label to each column
data.forEach((datum, index) => {
  datum.unshift(dataNames[index]);
});

// Convert data arrays to CSV format
const CSVURL = 'data:text/csv;charset=UTF-8,';
let transposedData = data[0].map((col, i) => data.map(row => row[i])); // NEW: TRANSPOSE DATA
let formattedData = transposedData.map(e => e.join(',')).join('\n'); // Modified
let encodedData = CSVURL + encodeURIComponent(formattedData);

// Generic download CSV function
downloadFile('name.csv', encodedData);

还注意到@Kosh Very最近增加了替代列标签,引用为:

Also noting the recent addition for alternative column labeling by @Kosh Very , quoted as:

// pull arrays by headers
data[0].forEach(h => data.push(this[h])); 

这篇关于将数据集转换为正确的CSV表示法以使用JavaScript下载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆