str = {a.b.c:1,a.b.d:2}转换为{a:{c:1,d:2}}

如何把str = {a.b.c:1,a.b.d:2,b.a.c:2,b.a.s:9}转换为{a:{c:1,d:2},b:{a:{c:2,s:9}}

阅读 2k
2 个回答

用lodash

var o = {}
Object.entries(str).forEach(([k,v])=>{_.set(o,k,v)})
function setValue(o, k, v){
    let keyArr = k.split('.');
    let tempObj = o, i = 0
    for (let len = keyArr.length; i < len - 1; ++i) {
        let key = keyArr[i];
        if (!tempObj[key]) {
            tempObj[key] = {}
        };
        tempObj = tempObj[key]
    }

    tempObj[keyArr[i]] = v
    return o
}

Object.entries(str).reduce((o, [k, v]) => setValue(o, k, v), {})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题