function downloadArrayAsCSV(array, filename) {
// 检查输入是否为数组
if (!Array.isArray(array)) {
console.error('The provided data is not an array.');
return;
}
// 如果数组为空,返回错误
if (array.length === 0) {
console.error('The array is empty.');
return;
}
let headers = Object.keys(array[0]).map(header => `"${header}"`).join(',');
const csv = [headers].concat(
array.map(row => {
return Object.values(row)
.map(text => {
// 替换字段中的双引号,并包裹在双引号中
if (text instanceof Date) {
return `"${text.toLocaleString()}"`;
}
if (typeof text === 'string') {
return `"${text.replace(/"/g, '""')}"`;
}
return text;
}).join(',');
})
).join('\n');
// 创建Blob对象
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
// 创建下载链接
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename || 'data.csv';
document.body.appendChild(link); // 将链接添加到页面中
// 触发下载
link.click();
// 清理
document.body.removeChild(link); // 移除链接
URL.revokeObjectURL(link.href); // 释放URL
}
// 示例数组
const dataArray = [
{ name: 'Kimi', age: 30, city: 'Shanghai' },
{ name: 'Alice', age: 24, city: 'Beijing' }
];
// 调用函数
downloadArrayAsCSV(dataArray, 'myData.csv');
输入数组 和csv文件名即可完成