媆媆_ 2022-02-18 22:38 采纳率: 31.8%
浏览 45
已结题

如何把字符串a.b.c=1转为对象

我想处理一下通过antd 的form表单拿到字段a.b.c=1和a.b.d=2后,我想处理一下,大家有什么好的想法

拿到的数据:

a.b.c:1,
a.b.d:2

想处理成:
{
a:{
b:{
c:1,
d:2

    }
 }

}

  • 写回答

2条回答 默认 最新

  • 开水泡饭@ 2022-02-19 11:26
    关注
    
    var obj = {
      "a": 3,
      "a.b.c": 1,
      "a.b.d": 2,
      "a.b.e": {
        "j.k.f": 1
      }
    }
    
    function desc(obj) {
      const temp = {}
      each(obj, temp)
      function each (obj, temp) {
        for (keys in obj) {
          keys.split(".").reduce((prev, current, index, arr) => {
            let k = `${prev}.${current}`
            eval(`
              if (prev) {
                if (typeof temp${prev} !== "object") {
                  temp${prev} = {}
                }
              };
              if (typeof obj[k.substr(1)] !== "object") {
                temp${k} = temp${k} ? temp${k} : obj[k.substr(1)] ? obj[k.substr(1)] : {};
              }else {
                temp${k} = {}
              }
            `)
            return k
          }, "")
          if (keys.indexOf('.') !== -1 && typeof obj[keys] === "object") {
            eval(`each(obj[keys], temp.${keys})`)
          }
        }
      }
      return temp
    }
    
    desc(obj)
    

    自己实现了一下,楼主有好方法抖我一下

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月16日
  • 创建了问题 2月18日

悬赏问题

  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥30 微信小程序 前端页面内容搜索