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

如何把字符串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日