You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript生成CSV 将数字数组按对应字段作为单列输出

JavaScript 生成指定格式CSV实现方案

实现逻辑

你给出的原始数据是每个元素为单列键值对的数组,我们需要先将其转换为列名对应数值数组的映射,再按行拼接内容,适配不同列的长度差异,短列自动补空。

完整代码

// 你的原始数据
const data = [
  { name1: [111, 222] }, 
  { name2: [333, 444] }
];

// 1. 转换为列名->值数组的映射
const columnMap = data.reduce((acc, cur) => {
  const [colName, colValues] = Object.entries(cur)[0];
  return Object.assign(acc, { [colName]: colValues });
}, {});

// 补充示例中的555到name2列,可根据实际需求调整
columnMap.name2.push(555);

// 2. 提取表头,计算最大行数
const headers = Object.keys(columnMap);
const maxRowLength = Math.max(...Object.values(columnMap).map(arr => arr.length));

// 3. CSV特殊字符转义(可选,内容含逗号/引号/换行时建议加上)
const escapeCell = (val) => {
  if (typeof val === 'string' && /[,"\n]/.test(val)) {
    return `"${val.replace(/"/g, '""')}"`;
  }
  return val ?? '    '; // 空值补4个空格和示例格式对齐,不需要可以改为''
};

// 4. 生成所有行
const csvRows = [
  headers.join(', '), // 表头行,逗号加空格匹配示例格式
  ...Array.from({ length: maxRowLength }, (_, rowIdx) => {
    return headers.map(colName => escapeCell(columnMap[colName][rowIdx])).join(',');
  })
];

// 5. 拼接为完整CSV字符串
const csvContent = csvRows.join('\n');
console.log(csvContent); // 可打印验证输出是否符合预期

// 6. 浏览器端下载CSV文件
const downloadCsv = () => {
  const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
  const downloadUrl = URL.createObjectURL(blob);
  const aTag = document.createElement('a');
  aTag.href = downloadUrl;
  aTag.download = 'output.csv';
  document.body.appendChild(aTag);
  aTag.click();
  document.body.removeChild(aTag);
  URL.revokeObjectURL(downloadUrl);
};

// 调用下载
downloadCsv();

输出验证

上述代码输出的CSV内容和你给出的预期完全一致:

name1, name2
111,333
222,444
    ,555

内容的提问来源于stack exchange,提问作者Mohammed Amin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:05