比如 var str = 'a.b.c';
要转为:
result = {
a: {
b: {
c: {}
}
}
}
console.log('result', stringToObject('a.b.c'))
function stringToObject (str) {
str = str != null || str ? str.split('.') : []
let res = {}, tmp = res;
str.forEach(key => {
tmp[key] = {}
tmp = tmp[key]
})
return res
}
递归的方法,切割第一项和剩余项,
有个《the little schemer》的意思
const str = 'a.b.c'
const strToObj = str => {
const list = str.split('.')
const iter = list => {
if (list.length) {
const [first, ...rest] = list
return {
[first]: iter(rest)
}
} else return {}
}
return iter(list)
}
console.log(strToObj(str))
看过楼上的 reduce 可以一行:
const result = str
.split('.')
.reverse()
.reduce(
(pre, cur) => ({[cur]: pre}),
{}
)
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
刚在 stackoverflow 找的答案