媆媆_ 2022-02-22 13:23 采纳率: 31.8%
浏览 74
已结题

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

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

  • 写回答

6条回答 默认 最新

  • £漫步 云端彡 2022-02-22 15:46
    关注

    以下代码采用递归执行,不论有多少层级,都可以封装

    let str = {
        'a.b.c': 1,
        'a.b.d': 2,
        'g.h.u': 2,
        'g.h.t': 9,
        'g.h.k.l': 5,
    }
    let result = {};
    function assemble(index, keys, value, obj) {
        if (index == keys.length - 1) {
            obj[keys[index]] = value;
            return;
        } else {
            if(!obj[keys[index]]){
                obj[keys[index]] = {};
            }
            assemble(index+1, keys, value, obj[keys[index]]);
        }
    }
    for (let item in str) {
        let keys = item.split(".");
        assemble(0, keys, str[item], result);
    }
    console.log(result)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 5月24日
  • 已采纳回答 5月16日
  • 创建了问题 2月22日