V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
goinghugh
V2EX  ?  算法

求助一个算法题,将 a.b.c=10 的格式转换为 map 结构

  •  
  •   goinghugh · 2020-03-23 20:24:53 +08:00 · 1551 次点击
    这是一个创建于 1508 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    将 a.b.c 的格式转换为 map 结构.

    输入:

    a.b.c=10
    a.b.d=20
    a.e.f.z=30
    

    输出:

    {
        "a": {
            "b": {
                "c": 10,
                "d": 20
            },
            "e": {
                "f": {
                    "z": 30
                }
            }
        }
    }
    

    工作中遇到的一个问题,上述是屏蔽掉业务后的问题。 有没有比较好的实现方式?不用详细代码,能给出个相关的算法关键字或者思路就行,谢谢各位!

    7 条回复  ?  2020-03-23 21:07:18 +08:00
    qq316107934
        1
    qq316107934  
       2020-03-23 20:28:21 +08:00
    不说下语言? JS 可以直接实现吧
    goinghugh
        2
    goinghugh  
    OP
       2020-03-23 20:31:25 +08:00
    @qq316107934 JS 如何实现?我比较熟的是 Java
    fishCatcher
        3
    fishCatcher  
       2020-03-23 20:41:00 +08:00 via iPhone
    trie 树?每一层是一个大括号
    fishCatcher
        4
    fishCatcher  
       2020-03-23 20:42:34 +08:00 via iPhone
    @fishCatcher 准确的来说不用 trie 树吧,普通的树就可以
    jmc891205
        5
    jmc891205  
       2020-03-23 20:55:29 +08:00
    反射 + 递归?
    goinghugh
        6
    goinghugh  
    OP
       2020-03-23 20:56:11 +08:00
    @fishCatcher 额,普通的树可以。。感谢,绕到二维数组之类的了。。
    qq316107934
        7
    qq316107934  
       2020-03-23 21:07:18 +08:00
    ```javascript
    function getJSONFromExp(exp){
    let m = {}
    let t = m
    s = exp.split(".")
    s.slice(0,-1).reduce((tmp,item) => {
    if (!t[item]){
    t[item] = {}
    }
    t = t[item]
    },t)
    last = s.pop().split("=")
    t[last[0]] = last[1]
    return m
    }

    console.log(getJSONFromExp("a.e.f.z=30"))
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1123 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 113ms · UTC 18:48 · PVG 02:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com