专栏首页全栈开发之路es6将txt数据序列化成json

es6将txt数据序列化成json

原数据(txt格式)

CN1100  PROVINCE    北京市

CN1101  CITY    北京市-北京市

CN1300  PROVINCE    河北省

CN1303  CITY    河北省-秦皇岛市

CN1309  CITY    河北省-沧州市

CN1311  CITY    河北省-衡水市

CN3500  PROVINCE    福建省

CN3501  CITY    福建省-福州市

CN3503  CITY    福建省-莆田市

CN3600  PROVINCE    江西省

CN3601  CITY    江西省-南昌市

CN3609  CITY    江西省-宜春市

CN3611  CITY    江西省-上饶市

期望的JSON格式

[

    {

        "code": "CN11",

        "province": "北京市",

        "city": [

            {

                "code": "01",

                "name": "北京市"

            }

        ]

    },

    {

        "code": "CN13",

        "province": "河北省",

        "city": [

            {

                "code": "03",

                "name": "秦皇岛市"

            },

            {

                "code": "09",

                "name": "沧州市"

            },

            {

                "code": "11",

                "name": "衡水市"

            }

        ]

    },

    {

        "code": "CN35",

        "province": "福建省",

        "city": [

            {

                "code": "01",

                "name": "福州市"

            },

            {

                "code": "03",

                "name": "莆田市"

            }

        ]

    },

    {

        "code": "CN36",

        "province": "江西省",

        "city": [

            {

                "code": "01",

                "name": "南昌市"

            },

            {

                "code": "09",

                "name": "宜春市"

            },

            {

                "code": "11",

                "name": "上饶市"

            }

        ]

    }

]

步骤:

1、观察原TXT文件格式,发现每一行换行了,即使用‘/n’隔开

2、str=(txt里的数据),let arrStr = str.split('\n');

console.log(arrStr)后发现,每行里一个小字符串之间由tab隔开,即使用‘/t’隔开

3、以分割的思维来写代码,多次对字符串运用split

let arrStr = str.split('\n');

let zoneList = [];

arrStr.map(i => {      //调用数组的每个元素i

    let item = i.split('\t');

  //没有'-'分割,即 省 的字段

// 例如:CN1300    PROVINCE    河北省


if (i.indexOf("-") == -1) {

        zoneList.push({

            code: item[0].slice(0, 4),

            province: item[2],

            city: []

        })

  } else {

        //例如福建省-福州市

        let city = item[2].split('-');

        //找到  河北省与河北省-秦皇岛市、河北省-沧州市、河北省-衡水市,-前名字相同的

        //并只返回一条(这个很关键)

        let cur = zoneList.find(j => j.province == city[0])

        cur.city.push({

            code: item[0].slice(4, 6),

            name: city[1]

        })

  }

})

//最后输出在控制台上内容太多最好序列化下才看得到

console.log(JSON.stringify(zoneList));

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python 中的字符串详解

    字符串很好理解:它就是一串字符,在python中用 ’ 或者 " 创建的都是字符串。

    六小登登
  • Python 正则表达式

    在开始之前我们先要明白两个问题。 1、什么是正则表达式? 2、为什么要学习正则表达式? 人类在做一件事之前,总是会先问一下为什么要这么做『你可能说你没有这么想过...

    keinYe
  • 外行学 Python 爬虫 第三篇 内容解析

    从网络上获取网页内容以后,需要从这些网页中取出有用的信息,毕竟爬虫的职责就是获取有用的信息,而不仅仅是为了下来一个网页。获取网页中的信息,首先需要指导网页内容的...

    keinYe
  • LeetCode 138:复制带随机指针的链表 Copy List with Random Pointer

    给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。

    爱写bug
  • 编程小知识之 JavaScript 调用堆栈

    console 支持 trace 方法,使用该方法可以向控制台输出当前的调用堆栈.

    用户2615200
  • Web3与智能合约交互实战

    在最初学习以太坊的时候,很多人都是自己创建以太坊节点后,使用geth与之交互。这种使用命令行交互的方法虽然让很多程序员感到兴奋(黑客帝国的既视感),但不可能指望...

    Tiny熊
  • npm包管理机制引质疑:又一安装程序中发现恶意代码,开发者账户频遭劫持

    最新中枪的是纯函数式编程语言Purescript,这种可编译为JavaScript,能用于开发Web、服务器端应用程序的语言,其npm安装程序中被植入了恶意代码...

    量子位
  • Leetcode 14:Longest Common Prefix 最长公共前缀

    Write a function to find the longest common prefix string amongst an array of st...

    爱写bug
  • webpack4配置详解之慢嚼细咽

    经常会有人会问起 webpack、 react、 redux、甚至 create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中...

    前端迷
  • 从零开始react实战:云书签-1 react环境搭建

    本篇是实战系列的第一篇,主要是搭建 react 开发环境,在create-react-app的基础上加上如下功能:

    用户2038589

扫码关注云+社区

领取腾讯云代金券