如何使用 Javascript 将数据导出到 CSV?

我设法编写了一个脚本,将数据从 Javascript 的 GET 请求导出到 CSV。但是,我有一个unit具有更多字段(时间、高度、纬度、o3、co2、ch2o)的变量。如何使用从脚本中获取的值创建包含更多列的 CSV?


到目前为止,我已经设法创建了一个带有多个标题的 CSV,但我不知道如何用数据填充 CSV 的行。我已经设法完全填充了一列。


在下面的函数中,我以前unit[Object.keys(unit)[4]]只获取co2数据。如何将数据附加到每一列?


function download_csv(data, sensor) {

  var csv = 'Day, altitude, latitude, o3, co2, ch2o\n';

  for (var index in data) {

    if (!data.hasOwnProperty(index)) continue;

    var unit = data[index];

    csv += unit[Object.keys(unit)[4]];

    csv += "\n";

  }

  var hiddenElement = document.createElement('a');

  hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);

  hiddenElement.target = '_blank';

  hiddenElement.download = sensor + '.csv';

  hiddenElement.click();

}

数据具有以下格式:

http://img2.mukewang.com/62c802880001c98e14610564.jpg

温温酱
浏览 180回答 1
1回答

人到中年有点甜

假设data参数包含用于构建 CSV 数据的对象数组,您可以使用Object.keys()和Object.value()动态构建数据。使用此方法,键名是什么或数据中包含多少个键名都无关紧要。function download_csv(data, sensor) {  let csvHeader = Object.keys(data[0]).join(',') + '\n'; // header row  let csvBody = data.map(row => Object.values(row).join(',')).join('\n');  var hiddenElement = document.createElement('a');  hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvHeader + csvBody);  hiddenElement.target = '_blank';  hiddenElement.download = sensor + '.csv';  hiddenElement.click();}let data = [{  lorem: 'ipsum',  foo: 'bar',  fizz: 'buzz'}];download_csv(data, 'foobar');如果您需要支持旧版浏览器,需要注意的一件事Object.values是 IE 不支持。不过,有一个polyfill可用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript