{abc:'123'} | {abc:'123'} |
{abc.ab:'123'} | {abc:{ab:'123'}} |
{abc[0]:'123', abc[1]:'234'} | {abc:['123', '234']} |
{abc[0].ab:'123', abc[1].bc:'234'} | {abc:[{ab:'123'}, {bc:'234'}]} |
function convert(formValues) {
var result = {};
for ( var name in formValues) {
var value = formValues[name];
if (name.indexOf('.') < 0) {
result[name] = value;
continue;
} else {
var simpleNames = name.split('.');
// 构建命名空间
var obj = result;
for ( var i = 0; i < simpleNames.length - 1; i++) {
var simpleName = simpleNames[i];
if (simpleName.indexOf('[') < 0) {
if (obj[simpleName] == null) {
obj[simpleName] = {};
}
obj = obj[simpleName];
} else { // 数组
// 分隔
var arrNames = simpleName.split('[');
var arrName = arrNames[0];
var arrIndex = parseInt(arrNames[1]);
if (obj[arrName] == null) {
obj[arrName] = []; // new Array();
}
obj = obj[arrName];
if (obj[arrIndex] == null) {
obj[arrIndex] = {}; // new Object();
}
obj = obj[arrIndex];
}
}
obj[simpleNames[simpleNames.length - 1]] = value;
}
}
return result;
}
转载于:https://blog.51cto.com/yqcto/908719