我有一个函数可以在某些响应中将值从数组写入 csv 文件,但在此之前我需要在每个选项卡的第一行提供带有字段名称的标题,所以我使用 csv += '/t header 1',csv += '/t header 2'
编写了标题,等等。
这是我的代码块
function exportToCsv(fName, rows) {
var csv = 'branch';
csv += '\t customerId';
csv += '\t customerName';
csv += '\t LOAN ID/UT unique ID';
csv += '\n';
for (var i = 0; i < rows.length; i++) {
var row = Object.values(rows[i]);
for (var j = 0; j < row.length; j++) {
var val = '';
val = row[j] === null ? '' : row[j].toString();
if (j > 0)
csv += '\t';
csv += val;
}
csv += '\n';
}
}
有什么有效的方法可以在上面的函数中写出这五行代码吗?当前代码正在运行,但我正在寻找一种更有效的方法来替换这些行。
另请注意,我刚刚在这里提到了几个标题名称,但实际上我有 20 - 30 个标题字段。
请分享您的想法。
最佳答案
如果您的 row
对象中的键与标题相同,您可以使用 .join
将它们串入 csvheader。否则,您可以使用映射数组将行键转换为 CSV 的适当 header 。例如:
const row = {
branch: 'Main',
customerId: 45,
customerName: 'Bill',
'LOAN ID/UT unique ID': 'X456Y01'
}
let csvheader = Object.keys(row).join('\t');
console.log(csvheader);
const row2 = {
branch: 'Main',
Id: 45,
Name: 'Bill',
LoanId: 'X456Y01'
};
const map = {
branch: 'branch',
Id: 'customerId',
Name: 'customerName',
LoanId: 'LOAN ID/UT unique ID'
}
csvheader = Object.keys(row2).map(v => map[v]).join('\t');
console.log(csvheader);
关于javascript - 如何以更有效的方式将标题添加到 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59003822/