原数据:
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': '名字',
},
},
},
},
};
下面是给出的方法:
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
}