下面我有一个混合的当前代码,我在这里的一个单独的问题上找到但是我得到一个错误说rowArray
function downloadcsv(){
const rows = [];
for(var i = 0; i < vm.data.length; ++i)
{
rows.push(vm.data[i].value, vm.data[i].count);
}
console.log(rows);
let csvContent = "data:text/csv;charset=utf-8,";
rows.forEach(function(rowArray){
//i get a rowArray.join is not a function error when i run this.
//What can i do to fix this?
let row = rowArray.join(",");
csvContent += row + "\r\n";
});
var encodedUri = encodeURI(csvContent);
window.open(encodedUri);
}
我提前感谢你们。
答案 0 :(得分:0)
尝试使用csv字符串中的blob创建一个blob网址,如下所示:
var csvData = new Blob([csvContent], {type: 'text/csv;charset=utf-8;'});
var csvURL = window.URL.createObjectURL(csvData);
window.open(csvURL);
所以在你的例子中它将是
function downloadcsv() {
const rows = [];
for (var i = 0; i < vm.data.length; ++i) {
rows.push(vm.data[i].value, vm.data[i].count);
}
console.log(rows);
let csvContent = "";
rows.forEach(function(rowArray) {
//i get a rowArray.join is not a function error when i run this.
//What can i do to fix this?
let row = rowArray.join(",");
csvContent += row + "\r\n";
});
var csvData = new Blob(csvContent, {type: 'text/csv;charset=utf-8;'});
var csvURL = window.URL.createObjectURL(csvData);
window.open(encodedUri);
}
&#13;
答案 1 :(得分:0)
您收到错误的原因&#39; rowArray.join不是函数&#39;是因为你在一个不是数组的类型上调用它。这是因为push函数正在制作一个大型字符串数组,而不是您期望的数组数组。我已粘贴了一种修复方法:
const vmData = [
{
value: 'first',
count: 12,
},
{
value: 'second',
count: 100,
},
{
value: 'third',
count: 20,
},
{
value: 'fourth',
count: 30,
},
];
const makeCSV = (data) => {
const rows = [];
for (let i = 0; i < data.length; i++) {
rows.push(`${data[i].value},${data[i].count}`);
}
return rows.join('\n');
};
const csv = makeCSV(vmData);
你可以使用array.map()
使这更优雅,但它可以完成任务。