在javascript

时间:2015-07-05 00:11:47

标签: javascript jquery arrays forms

这是一种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

1 个答案:

答案 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;
&#13;
&#13;

希望得到这个帮助。