vue解析json嵌套数组_Stack 的经典应用-嵌套数组的解析

d186e370376fe0ef709b39eaa56bb3cb.png

今天无意中发现了这么一道有意思的题目:

let str = "[ {a:1 , d:3} , {b:2} , {c:3} ]" 

将其解析成 JavaScript 的数据结构。详细原题可以看这里 js中,如何将一个字符串类型的数组转换为真正的数组?

这题对我来讲非常熟悉,属于典型的 stack + queue 题型。作为一道考察 CS 基础的 medium 的经典编程面试题,是一道常考题,我之前经常面试和被面试到。下面我来详细说一说自己的思路。

▍准备知识

上路之前请先参考 LeetCode 20. Valid Parentheses 先了解一下基础。

▍详细解题思路

为了简化模型,假设输入满足以下条件:

1 输入是一个合法的字符串,即各种嵌套括号等都是合法的(legit JavaScript data structure)。

2 根节点只包含一个数组或者对象。

3 仅包含数组[]和对象{}作为复杂嵌套对象。

4 除数组、对象之外,输入字符串仅包含冒号:和逗号,作为元数据,其他都是需要处理的数据。

5 不包含任何引号或者双引号。

6 忽略空白字符(单个或者多空格等)。

有了输入和要求,那么怎么撸这题呢?

当然是按照 TDD(test driven development)来搞。

首先列出所有种类的测试用例:

// level 1
const strSimpleArray = "[ a, 33 ]";
const strSimpleObject = "{ a: 33 }";
// level 2
const strArrayObject = "[ a, { b: 2} , 33 ]";
const strObjectArray = "{ a:1, b:[ 2   ] , c:33   }";
// level 3
c
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值