逐日 30 秒 ⏱ CSV 表格数据转换 JSON 对象

简介

数组、CSV、表格、东西

《逐日 30 秒 ⏱ CSV 表格数据转换 JSON 对象》

我们之前的两期 数组转 CSV 表格数据JSON 对象数组转换 CSV 表格数据 中进修了转化为 CSV 表格数据的代码片断,本日就讲讲 怎样把 CSV 表格数据转换为 JSON 对象:

// 该源码来自于 https://30secondsofcode.org
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

= values[index]), obj), {}); }); };

代码剖析

应用 \n 掏出表头数据 并运用 Array.prototype.split 把表头数据支解为 表头字段数组用于组织 JSON 对象的键值:

const titlesData = data.slice(0, data.indexOf('\n'));
const titles = titlesData.split(delimiter);

掏出表格数据并运用 Array.prototype.split 支解为行数组

const rows = data
    .slice(data.indexOf('\n') + 1)
    .split('\n')

运用 Array.prototype.map 遍历一切行数据取得对象数组:

return rows.map(v => {
    // ...
    // 返回建立对象
});

遍历过程当中举行数据支解 和 对象拼装:

const values = v.split(delimiter);
titles.reduce((obj, title, index) => (obj

= values[index]), obj), {});

小技能:应用
, 运算递次能够文雅的写出先赋值后返回数据的精简代码。

运用场景

用户上传 CSV 表格数据转化为 JSON 并上传到服务端,这里不对 CSV 的 BOM 举行推断和处置惩罚(相关内容能够检察 你所不知道 ❌ BOM)。

构造
<input type="file" name="file" onchange="importPostData(this.files)">
CSV内容
title,content
pushmetop,让我们一同变得更好
sf,答题平台
掘金,掘金是一个协助开发者生长的社区
剧本
function importPostData(files) {
    const reader = new FileReader();
    reader.onload = function (e) {
        const data = CSVToJSON(e.target.result)
        // 发送数据要求到服务端
    };
    reader.readAsText(files[0]);
}

着手尝尝:应用 CSVToJSON 和 JSONtoCSV 完成一个简朴的数据库?

一同生长

在疑心的城市里总少不了并肩偕行的
同伴 让我们一同生长。

  • 假如您想让更多人看到文章能够点个 点赞
  • 假如您想鼓励小二能够到 Github 给个 小星星
  • 假如您想与小二更多交换增加微信 m353839115

《逐日 30 秒 ⏱ CSV 表格数据转换 JSON 对象》

本文原稿来自
PushMeTop

    原文作者:zhangxiangliang
    原文地址: https://segmentfault.com/a/1190000018565028
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞