将 JSON 转换为 CSV

JavaScriptJavaScriptBeginner
立即练习

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

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

简介

在本实验中,我们将深入探索 JavaScript 编程的世界,并探讨将 JSON 数据转换为 CSV 格式的过程。通过本实验,你将学习如何使用诸如 join()map()reduce() 等内置方法,将对象数组转换为一个字符串,以便在电子表格软件中轻松读取和操作。本实验非常适合那些希望更深入了解 JavaScript 中数据操作的人。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic 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") javascript/AdvancedConceptsGroup -.-> javascript/destr_assign("Destructuring Assignment") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("Template Literals") subgraph Lab Skills javascript/variables -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/data_types -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/arith_ops -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/comp_ops -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/array_methods -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/higher_funcs -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/destr_assign -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/spread_rest -.-> lab-28457{{"将 JSON 转换为 CSV"}} javascript/template_lit -.-> lab-28457{{"将 JSON 转换为 CSV"}} end

将 JSON 转换为 CSV

要将对象数组转换为包含指定列的逗号分隔值(CSV)字符串,请使用以下函数:

const JSONtoCSV = (arr, columns, delimiter = ",") =>
  [
    columns.join(delimiter),
    ...arr.map((obj) =>
      columns.reduce(
        (acc, key) =>
          `${acc}${!acc.length ? "" : delimiter}"${!obj[key] ? "" : obj[key]}"`,
        ""
      )
    )
  ].join("\n");

要使用它,请执行以下步骤:

  1. 打开终端/SSH 并输入 node 以开始练习编码。
  2. 使用以下参数调用 JSONtoCSV 函数:
    • arr:要转换的对象数组。
    • columns:一个字符串数组,指定要包含在 CSV 输出中的列。
    • delimiter:一个可选字符串,指定要使用的分隔符(默认值为 ',')。
  3. 该函数将返回一个 CSV 字符串,其中仅包含指定的列和对象的值。
  4. 如果未指定分隔符,则将使用默认分隔符 ','
  5. 以下代码块中提供了使用该函数的示例。
JSONtoCSV(
  [{ a: 1, b: 2 }, { a: 3, b: 4, c: 5 }, { a: 6 }, { b: 7 }],
  ["a", "b"]
); // 'a,b\n"1","2"\n"3","4"\n"6",""\n"","7"'

JSONtoCSV(
  [{ a: 1, b: 2 }, { a: 3, b: 4, c: 5 }, { a: 6 }, { b: 7 }],
  ["a", "b"],
  ";"
); // 'a;b\n"1";"2"\n"3";"4"\n"6";""\n"";"7"'

总结

恭喜你!你已经完成了 JSON 转 CSV 实验。你可以在 LabEx 中练习更多实验来提升你的技能。