简介
在本实验中,我们将探索如何使用 JavaScript 将逗号分隔值(CSV)字符串转换为对象的二维数组。我们将使用各种字符串操作方法,如 split() 和 slice(),以及数组方法,如 reduce() 和 map() 来实现这种转换。本实验将帮助你了解如何在 JavaScript 中处理 CSV 数据,以及如何将其转换为易于处理的格式。
在本实验中,我们将探索如何使用 JavaScript 将逗号分隔值(CSV)字符串转换为对象的二维数组。我们将使用各种字符串操作方法,如 split() 和 slice(),以及数组方法,如 reduce() 和 map() 来实现这种转换。本实验将帮助你了解如何在 JavaScript 中处理 CSV 数据,以及如何将其转换为易于处理的格式。
要将逗号分隔值(CSV)字符串转换为对象的二维数组并用于练习编码,请打开终端/SSH 并输入 node。字符串的第一行用作标题行。以下是将 CSV 转换为 JSON 的步骤:
Array.prototype.indexOf() 找到第一个换行符(\n)。Array.prototype.slice() 删除第一行(标题行),并使用提供的 delimiter 通过 String.prototype.split() 将其拆分为各个值。String.prototype.split() 为每一行创建一个字符串。String.prototype.split() 并根据提供的 delimiter 分隔每一行中的值。Array.prototype.reduce() 为每一行的值创建一个对象,其键从标题行解析而来。delimiter,以使用默认分隔符 ,。以下是代码:
const CSVToJSON = (data, delimiter = ",") => {
const titles = data.slice(0, data.indexOf("\n")).split(delimiter);
return data
.slice(data.indexOf("\n") + 1)
.split("\n")
.map((v) => {
const values = v.split(delimiter);
return titles.reduce(
(obj, title, index) => ((obj[title] = values[index]), obj),
{}
);
});
};
要测试该函数,请使用以下示例:
CSVToJSON("col1,col2\na,b\nc,d");
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];
CSVToJSON("col1;col2\na;b\nc;d", ";");
// [{'col1': 'a', 'col2': 'b'}, {'col1': 'c', 'col2': 'd'}];
恭喜你!你已经完成了 CSV 转 JSON 实验。你可以在 LabEx 中练习更多实验来提升你的技能。