我需要从键中生成数组。
在下面的字段中,模式返回键名称字段,行,""。
如何生成多维数组并保存值?
var fixed = [],
var pattern = { key: /[a-z0-9_-]+|(?=\[\])/gi }
var field = { name: "name-field1[row1][]",value :"10" }
var keys = field .name.match(patterns.key), k;
//returns name-field, row, ""
while ((k = keys.pop()) !== undefined) {
if(fixed[key] === undefined) {
fixed[key] == []
}
var obj = []
obj[k] = pair.value;
fixed[key] = obj;// I am doing wrong saving in the "row" key I need save in "col"
}
输出:
{name-field:row1 {[10,20,30],row2:[20,30,40]}}
答案 0 :(得分:0)
我正在回答我自己的问题。
我需要将表单转换为对象。
以下是将表单序列化为对象的code的链接
var push_obj = [];
if (patterns.push.test(keys[(keys.length - 1)])) {
$(keys).each(function(i,val) {
if(i == (keys.length - 1)) return false;
if(jQuery.inArray( val, keys ) == 0 ) {
if(named[val] === undefined) {
return false;
}
push_obj = named[val];
} else {
if(push_obj[val] === undefined) {
push_obj = [];
return false;
} else {
push_obj = push_obj[val];
}
}
});
}
keys.reverse();
$(keys).each(function(i,val) {
if(patterns.fixed.test(val)){
var obj = [];
} else {
var obj = {};
}
if(jQuery.inArray( val, keys ) == 0 ) {
if (patterns.push.test(val)) {
push_obj.push(pair.value)
obj = push_obj;
} else {
obj[val] = pair.value;
}
} else {
obj[val] = prevObj;
}
if(jQuery.inArray( val, keys ) == (keys.length - 1)) {
named = $.extend(true, named, obj);
}
prevObj = obj
});