CSV 转 JSON

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索如何使用 JavaScript 将逗号分隔值(CSV)字符串转换为对象的二维数组。我们将使用各种字符串操作方法,如 split()slice(),以及数组方法,如 reduce()map() 来实现这种转换。本实验将帮助你了解如何在 JavaScript 中处理 CSV 数据,以及如何将其转换为易于处理的格式。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/array_methods("Array Methods") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") subgraph Lab Skills javascript/variables -.-> lab-28230{{"CSV 转 JSON"}} javascript/data_types -.-> lab-28230{{"CSV 转 JSON"}} javascript/arith_ops -.-> lab-28230{{"CSV 转 JSON"}} javascript/comp_ops -.-> lab-28230{{"CSV 转 JSON"}} javascript/array_methods -.-> lab-28230{{"CSV 转 JSON"}} javascript/higher_funcs -.-> lab-28230{{"CSV 转 JSON"}} end

CSV 转 JSON

要将逗号分隔值(CSV)字符串转换为对象的二维数组并用于练习编码,请打开终端/SSH 并输入 node。字符串的第一行用作标题行。以下是将 CSV 转换为 JSON 的步骤:

  1. 使用 Array.prototype.indexOf() 找到第一个换行符(\n)。
  2. 使用 Array.prototype.slice() 删除第一行(标题行),并使用提供的 delimiter 通过 String.prototype.split() 将其拆分为各个值。
  3. 使用 String.prototype.split() 为每一行创建一个字符串。
  4. 使用 String.prototype.split() 并根据提供的 delimiter 分隔每一行中的值。
  5. 使用 Array.prototype.reduce() 为每一行的值创建一个对象,其键从标题行解析而来。
  6. 省略第二个参数 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 中练习更多实验来提升你的技能。