javascript - 如何以更有效的方式将标题添加到 csv 文件

标签 javascript arrays regex

我有一个函数可以在某些响应中将值从数组写入 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/

相关文章:

javascript - Jslint 改进 | url 的字符集

php - 无法确定是否安装了 JSON

c++ - 什么类型有多维数组?

javascript - 将两个数组组合并合并为 Highchart Pie 的数组集

php - 通配符子域路径问题

javascript - 将 JSON 字符串反序列化为列表数组

javascript - 单个数组内的对象值之间的比较

php - preg_replace 正则表达式问题

regex - preg_match() : Compilation failed: invalid range in character class at offset 15

python - 拆分字符串并将分隔符保留为拆分字符串 block 的一部分,而不是单独的列表元素