这是一种ptoblem,在python我需要两分钟才能解决,但在js或jquery中,我争取了几个小时...... 我有一个表格,我需要详细说明客户端的数据。
使用:
var serializedData = $('form#ae_form_grid').serialize()
我得到了这个:
“ID = 13安培; quantita_gen_grid = 2及prezzo_gen_grid = 120安培; sconto_gen_grid =安培; PREZZO-15 = 120安培; quantita-15 = 4和; sconto-15 =&安培; selezionato-16 =在&安培; PREZZO-16 = 120安培; quantita-16 = 2及sconto-16 =&安培; PREZZO-14 = 120安培; quantita-14 = 2及sconto-14 =&安培; selezionato-17 =在&安培; PREZZO-17 = 122&安培; quantita-17 = 3及sconto- 17 =“
我需要使用以下命令创建一个对象数组:
[“16”:{prezzo:120,quantita:2,sconto:“”},“17”:{prezzo:122,quantita:3,sconto:“”}]
16和17来自名称和prezzo中的“selezionato”键,quantita ...是-16和-17 ..
我试过:
$.each(serializedData.split('&'), function (index, elem) {
var vals = elem.split('=');
var selected = vals[0].split("-");
if (selected[0] == "selezionato") {
sel.push(selected[1])
}
})
我有一个正确的数组,但我可以更进一步。
感谢 ˚F
答案 0 :(得分:0)
你在这里:
var input = "id=13&quantita_gen_grid=2&prezzo_gen_grid=120&sconto_gen_grid=&prezzo-15=120&quantita-15=4&sconto-15=&selezionato-16=on&prezzo-16=120&quantita-16=2&sconto-16=&prezzo-14=120&quantita-14=2&sconto-14=&selezionato-17=on&prezzo-17=122&quantita-17=3&sconto-17=";
//["16":{ prezzo:120,quantita:2,sconto:""},"17":{prezzo:122,quantita:3,sconto:""}
var array = input.split('&');
var attributes = ['prezzo', 'quantita', 'sconto'];
var keys = $.map(array, function(value) {
var string = value.split('=')[0];
if (string.indexOf(attributes[0]) > -1) return string.split('-')[1];
});
keys = $.unique(keys).sort();
//console.log(JSON.stringify(keys));
var result = []
$.each(keys, function(index, key) {
var item = {};
var obj = {};
$.each(array, function(i, v) {
var k = v.split('=')[0];
//console.log("==" + k);
if (k.indexOf(key) > -1) {
//console.log("====" + k.split('-')[0]);
if ($.inArray(k.split('-')[0], attributes) > -1) {
obj[k.split('-')[0]] = v.split('=')[1];
//console.log(JSON.stringify(obj));
}
}
});
//console.log(JSON.stringify(obj));
item[key] = obj;
result.push(item);
});
$('span').text(JSON.stringify(result));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span></span>
&#13;
希望得到这个帮助。