将 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.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")) ``` |