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

JavaScript对象数组转CSV下载出现[object Object]错误求助

问题原因

你写的convertToCsv函数没有做对象数组到CSV格式的转换逻辑,直接把原始对象数组传给了Blob构造函数。Blob处理非字符串内容时会默认调用toString()方法做类型转换,普通JS对象调用这个方法的返回值就是[object Object],所以最终导出的文件里就只有这串内容。

修复后的转换代码

const convertToCsv = (objects) => {
  if (!objects?.length) return ''

  // 取第一个对象的键作为CSV表头,需要自定义导出字段的话可以手动写数组,比如 ['name','email']
  const headers = Object.keys(objects[0])
  const csvRows = [
    // 拼接表头行
    headers.join(','),
    // 拼接每一行数据
    ...objects.map(item => {
      return headers.map(key => {
        // 处理字段转义,避免内容里的逗号、双引号破坏CSV格式
        const value = item[key] ?? ''
        const escapedValue = String(value).replace(/"/g, '""')
        return `"${escapedValue}"`
      }).join(',')
    })
  ]

  // 拼接完整CSV字符串,加\ufeff是解决Excel打开乱码的问题
  const csvContent = '\ufeff' + csvRows.join('\n')
  const dataBlob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' })
  return URL.createObjectURL(dataBlob)
}

补充注意事项

  • 如果不需要自动读取所有字段,手动定义headers数组即可指定要导出的字段和顺序
  • 页面卸载或者下载完成后建议调用URL.revokeObjectURL(返回的blob地址)释放内存,避免不必要的资源占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:39:04