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

2020-03-23 20:24:53 +08:00
 goinghugh

将 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
            }
        }
    }
}

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

1541 次点击
所在节点    算法
7 条回复
qq316107934
2020-03-23 20:28:21 +08:00
不说下语言? JS 可以直接实现吧
goinghugh
2020-03-23 20:31:25 +08:00
@qq316107934 JS 如何实现?我比较熟的是 Java
fishCatcher
2020-03-23 20:41:00 +08:00
trie 树?每一层是一个大括号
fishCatcher
2020-03-23 20:42:34 +08:00
@fishCatcher 准确的来说不用 trie 树吧,普通的树就可以
jmc891205
2020-03-23 20:55:29 +08:00
反射 + 递归?
goinghugh
2020-03-23 20:56:11 +08:00
@fishCatcher 额,普通的树可以。。感谢,绕到二维数组之类的了。。
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"))
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/655490

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX