无需插件创建 CSV 字符串

问题描述 投票:0回答:1

我试图让用户从我们的应用程序下载过滤后的成员列表。 我已经做了一个更复杂的 CSV 字符串,它工作得很好,但由于某种原因我无法让这个工作。

代码是:

  function getCSVString(){
    return ['nom', 'telèfon', 'email'].join(',') + '\n'
    + filteredMembers.value.map(member => {
      return [member.nom, member.telèfon, member.email].join(',') + '\n'
    })
  }

我尝试了很多变体,其中一些' ' 或其他地方的连接,并已经下载了 42 个测试文件,但我得到的最接近的文件看起来像这样,第一行后面有一个愚蠢的空格,它改变了一切:

Excel 表格中有一个愚蠢的空格

我没看到什么???

提前谢谢您!!!

javascript csv export-to-csv
1个回答
0
投票

您的问题是

.map
返回
array

当您组合

str + array
时,JS 会将数组转换为字符串表示形式,这是一个以逗号分隔的字符串 - 即每行以逗号分隔 - 从而在每行的开头添加一个逗号。

修复是

.join()
.map
返回的数组不带逗号

let members = [ 
    { nom:"A", tel:"1", email:"A" },
    { nom:"B", tel:"2", email:"B" },
    { nom:"C", tel:"3", email:"C" }
]
    
let result = ['nom', 'telèfon', 'email'].join(',') + '\n' +
  members.map(member => {
    return [member.nom, member.tel, member.email].join(',') + '\n'
  }).join("");

console.log(result);

© www.soinside.com 2019 - 2024. All rights reserved.