【发布时间】:2020-01-02 08:39:23
【问题描述】:
我想知道使用 javascript 将 json 转换为 csv 时, 每次点击时,标题都会出现多次。 下面是我的代码,每次点击,标题都会增加, 如下输出所示
convertToCSV(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
var str = '';
for (var i = 0; i < array.length; i++) {
var line = '';
for (var index in array[i]) {
if (line != '') line += ','
line += array[i][index];
}
str += line + '\r\n';
}
return str;
}
exportCSV =() =>{
const headers = ["Id", "Name", "City"];
const items = [
[60, "xyz", "TH"],
[62, "abc", "MY"],
[61, "xxx", "IN"]
];
const fileTitle = this.props.title;
if (headers) {
items.unshift(headers);
}
// Convert Object to JSON
var jsonObject = JSON.stringify(items);
console.log(jsonObject);
var csv = this.convertToCSV(jsonObject);
var exportedFilenmae = fileTitle + '.csv' || 'export.csv';
var blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
if (navigator.msSaveBlob) { // IE 10+
navigator.msSaveBlob(blob, exportedFilenmae);
} else {
var link = document.createElement("a");
if (link.download !== undefined) { // feature detection
// Browsers that support HTML5 download attribute
var url = URL.createObjectURL(blob);
link.setAttribute("href", url);
link.setAttribute("download", exportedFilenmae);
link.style.visibility = 'hidden';
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
}
}
在 csv 中输出,如下所示, 每次点击,标题数量都会增加
Id, Name, City
Id, Name, City
60, "xyz", "TH"
62, "abc", "MY"
61, "xxx", "IN"
【问题讨论】:
标签: javascript jquery arrays csv object