发布于 2026-01-06 0 阅读
0

在 JavaScript DEV 的全球展示与讲述挑战赛中,将对象数组转换为 CSV 字符串,由 Mux 呈现:展示你的项目!

在 JavaScript 中将对象数组转换为 CSV 字符串。

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

工作中,有时我们需要在服务器端生成 CSV 字符串,并将其发送到前端应用程序,以便用户可以下载电子表格文件(例如报告)。

当然,市面上已经有一些软件包可以处理各种 CSV 用例,但我们只是想要一个简单的 JavaScript 解决方案,因为我们知道来自数据库的数据结构始终是一个对象数组。

不过在继续之前,值得一提的是,我们将在解决方案中使用一些您可能已经熟悉也可能不熟悉的 JavaScript 方法和技巧:

如果您现在对以上内容感到有些陌生,请随时暂停片刻,先了解一下,等您更熟悉之后再回来。


欢迎回来,如果你休息了这段时间的话👋

那么,我们如何将对象数组转换为 CSV 字符串,同时确保列标题和行中显示正确的数据呢?

我们先来创建对象数组:

const itemsArray = [
      { itemId: 1, itemRef: "Item 001" },
      { itemId: 2, itemRef: "Item 002" },
      { itemId: 3, itemRef: "Item 003" }
    ];

Enter fullscreen mode Exit fullscreen mode

创建 CSV 字符串的第一步是定义列标题并将键值对提取到各自的数组中:

const csvString = [
    [
      "Item ID",
      "Item Reference"
    ],
    ...itemsArray.map(item => [
      item.itemId,
      item.itemRef
    ])
  ];

console.log(csvString);
/*
   [
    ["Item ID", "Item Reference"],
    [1, "Item 001"],
    [2, "Item 002"],
    [3, "Item 003"]
   ]
*/
Enter fullscreen mode Exit fullscreen mode

现在我们已经将所有数据放在数组中,我们可以使用我们的.map().join()方法将所有内容整合在一起:

const csvString = [
    [
      "Item ID",
      "Item Reference"
    ],
    ...itemsArray.map(item => [
      item.itemId,
      item.itemRef
    ])
  ]
   .map(e => e.join(",")) 
   .join("\n");

console.log(csvString);
/*
  "Item ID,Item Reference
  1,Item 001
  2,Item 002
  3,Item 003"
*/
Enter fullscreen mode Exit fullscreen mode

那么接下来会发生什么呢?首先,第一个map/join组合将四个数组合并成一个包含标题和键值对的单一数组,键值对的数据类型为字符串,例如“1,Item 001”。然后,最后一个join组合将这个单一数组转换为字符串。


在这篇文章中,我们使用了一些有用的数组方法和 JavaScript 中的扩展语法,成功地将对象数组转换为 CSV 字符串。

请复制并尝试以上代码,如有任何疑问,欢迎在此处或Twitter上向我提问。

感谢阅读!

文章来源:https://dev.to/samueldjones/convert-an-array-of-objects-to-csv-string-in-javascript-337d