form表单name以点(.)分割如何转json?

原始数据:

let form = {  
    'data': {  
        'user.title': '标题',  
        'data.name': '名字',  
    },  
};  

最终效果:

let json = {  
    'data': {  
        'user': {  
            'title': '标题',  
        },  
        'data': {  
            'name': '名字',  
        },  
    },  
};

复杂一点:

  
let form = {  
    'data': {  
        'user.title': '标题',  
        'user.name': '名字',  
        'data.title': '标题',  
        'data.name': '名字',  
    },  
    'admin.data': {  
        'form.user.title': '标题',  
        'form.user.name': '名字',  
    },  
};  
  
let json = {  
    'data': {  
        'user': {  
            'title': '标题',  
            'name': '名字',  
        },  
        'data': {  
            'title': '标题',  
            'name': '名字',  
        },  
    },  
    'admin': {  
        'data': {  
            'form': {  
                'user': {  
                    'title': '标题',  
                    'name': '名字',  
                },  
            },  
        },  
    },  
};
阅读 2.2k
2 个回答

测试可以 你瞅瞅!
Q[GOBEU8PSPU1)D(Z1UBHZ2.png

function  handle(obj) {

let  obj2 = {};

for (var  k  in  obj) {

var  data = k.split('.');

data.reduce((prev, cur, index, arr) => {

if (!prev[cur]) {//不存在等于空对象

prev[cur] = {};

}

if (index + 1 == arr.length) {

if (Object.prototype.toString.call(obj[k]) === '\[object Object]') {//值为对象递归调用

prev[cur] = handle(obj[k])

} else {

prev[cur] = obj[k]

}

  

}

return  prev[cur]

  

}, obj2)

  

}

return  obj2

  

}``
let form = {  
    'data': {  
        'user.title': '标题',  
        'data.name': '名字',  
    },  
};  
let newform = {
}
for(let key in form) {
    newform[key] = {};
    for(let j in form[key]) {
        let keyArr = j.split('.');
        newform.data[keyArr[0]] = {}
        newform.data[keyArr[0]][keyArr[1]] = form.data[j]
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题