javascript - 将数组数组导出到 CSV
问题描述
我正在尝试遍历多维数组以将其导出为 CSV。我尝试在线复制一些指南,并且大多数似乎都显示了与如何将 JavaScript 数组信息导出到 csv(在客户端)类似的解决方案?,但是他们都提到了const rows =
输入信息数组的位置。我试图修改它以循环遍历数组,但它没有提示我下载 CSV,所以我不确定它是否有效。谁能告诉我我做错了什么。
function createCSV() {
// loop the outer array
for (var y = 0; y < properties.length; y++) {
// get the size of the inner array
var innerArrayLength = properties[y].length;
// loop the inner array
for (var z = 0; z < innerArrayLength; z++) {
const rows = [
[z]
];
let csvContent = "data:text/csv;charset=utf-8,"
+ rows.map(e => e.join(",")).join("\n");
}
}
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "my_data.csv");
document.body.appendChild(link);
link.click();
}
注意:这是对Export and append object to csv的改写,因为我从使用对象更改为多维数组,这从根本上改变了问题
解决方案
我把它复杂化了。下面的代码有效,我创建了一个按钮来触发该功能,而不是强制点击。
function createCSV() {
var csv = "";
properties.forEach(function(row) {
csv += row.join(',');
csv += "\n";
});
var hiddenElement = document.createElement('a');
hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
hiddenElement.target = '_blank';
hiddenElement.download = 'properties.csv';
hiddenElement.click();
}
推荐阅读
- javascript - 网站导航工具栏上的访问级别控制
- vba - 使用哪个 APDU 来读取/写入 MIFARE Ultralight NFC 标签上的记录?
- ios - 使用苹果硬件在 ubuntu 上构建 ios 应用程序
- javascript - 猫鼬回调中的变量范围不同吗?
- ios - 我使用 Xcode 分发应用程序到 App Store Connect。Xcode 上传失败并显示“ERROR ITMS-90037”
- html - 对第 n 个孩子数数的误解
- r - 如何在 Rmarkdown 中为一位作者添加多个从属关系?
- dart - Flutter invertColor 不会在手机中反转颜色
- javascript - 在反应中将 const 挂钩值从一个组件传递到另一个组件
- angularjs - 如何从javascript中的日期时间值中仅获取日期部分