将 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 } } } }
工作中遇到的一个问题,上述是屏蔽掉业务后的问题。 有没有比较好的实现方式?不用详细代码,能给出个相关的算法关键字或者思路就行,谢谢各位!
![]() | 1 qq316107934 2020-03-23 20:28:21 +08:00 不说下语言? JS 可以直接实现吧 |
2 goinghugh OP @qq316107934 JS 如何实现?我比较熟的是 Java |
3 fishCatcher 2020-03-23 20:41:00 +08:00 via iPhone trie 树?每一层是一个大括号 |
4 fishCatcher 2020-03-23 20:42:34 +08:00 via iPhone @fishCatcher 准确的来说不用 trie 树吧,普通的树就可以 |
![]() | 5 jmc891205 2020-03-23 20:55:29 +08:00 反射 + 递归? |
6 goinghugh OP @fishCatcher 额,普通的树可以。。感谢,绕到二维数组之类的了。。 |
![]() | 7 qq316107934 2020-03-23 21:07:18 +08:00 ```Javascript function getJSONFromExp(exp){ let m = {} let t = m s = exp.spli(".") 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")) ``` |