2015-06-23 2 views
0

Я использую serializearray() jquery для сериализации полей в JSON. Он работает хорошо, но мне нужно это по строке, каждая строка имеет идентификатор, называемый "matricula".serializearray() поля jquery для JSON по строкам

enter image description here

Мне нужно коснуться, как:

jsonObj = [{"matricula":"14002028","faltas":"1","calif":"9.30"}, 
      {"matricula":"14005038","faltas":"0","calif":"9.80"}, 
      {"matricula":"14005499","faltas":"2","calif":"9.50"}]; 

Но мой код показывает мне это :(

jsonObj = [{"matricula":"14002028","faltas":"1"}, 
      {"matricula":"14002028","calif":"9.5"}, 
      {"matricula":"14005038","faltas":"0"}, 
      {"matricula":"14005038","calif":"8.0"}, 
      {"matricula":"14005499","faltas":"2"}, 
      {"matricula":"14005499","calif":"10"}]; 

и это мой код:

var dataString = jQuery('#frm_CapCalif').serializeArray(); // Send data forms 

     jsonObj = []; // create JSON object 
jQuery.each(dataString, function(i, field){ // get each value serialize 
      item = {} 
      item ["matricula"] = field.name.substr(0,8);   
      if (field.name.substr(8,1)==='F') 

      item ["faltas"] = field.value; 
       else 
      item ["calif"] = field.value; 


    jsonObj.push(item); 
              }); 

ПРИМЕЧАНИЕ : Ева ry поле называется matricula & F и matricula & C, и это показывает это «14005028F» и «14005028C» ... F означает faltas и C означает calif.

Я думаю, что это смущает, есть ли способ сделать это более простым? Спасибо

+0

Я попробуйте удалить, если еще – depperm

+0

Когда удалили IF THEN stataments значения повторяются. jsonObj = [{"matricula": "14002028", "faltas": "1"}, {"matricula": "14002028", "calif": "1"}, {"matricula": "14002034 »,« faltas »:« 9,5 »}, {« matricula »:« 14002034 »,« calif »:« 9.5 »}, \t {" matricula ":" 14004589 "," faltas ":" 1 "}, {"matricula": "14004589", "calif": "1"}]; –

+0

Можете ли вы опубликовать, что такое dataString? – depperm

ответ

0

Добавить элемент, только если i не является нечетным. Что-то вроде этого:

item = {}; 
jQuery.each(dataString, function(i, field){ 
    if (field.name.substr(8,1)==='F') item ["faltas"] = field.value; 
    else item ["calif"] = field.value; 

    if (i%2 != 0) { 
    item ["matricula"] = field.name.substr(0,8); 
    jsonObj.push(item); 
    item = {}; 
    } 
}); 
+0

работал greate thanks :) –

+0

Я бы попросил вас не опускать других людей один единственный факт, который они назвали вашим решением ниже. – Tomalak

0
function groupByProperty(arr, prop) { 
    var index = {}, output = []; 
    $.each(arr, function (i, obj) { 
     var propVal = obj[prop]; 
     if (!index.hasOwnProperty(propVal)) index[propVal] = {}; 
     index[propVal] = $.extend(index[propVal], obj); 
    }); 
    $.each(index, function (key, value) { 
     output.push(value); 
    }); 
    return output;  
}); 

и

var test = [{"matricula":"14002028","faltas":"1"}, 
      {"matricula":"14002028","calif":"9.5"}, 
      {"matricula":"14005038","faltas":"0"}, 
      {"matricula":"14005038","calif":"8.0"}, 
      {"matricula":"14005499","faltas":"2"}, 
      {"matricula":"14005499","calif":"10"}]; 

groupByProperty(test, "matricula"); 
+0

@hector Вы понимаете, что вы отметили низшее решение, как принято? – Tomalak

+0

Hi ,. этот код решил мою проблему if (i% 2! = 0) { item ["matricula"] = field.name.substr (0,8); jsonObj.push (item); item = {}; } –

+0

Нет. «Скопировано и вставлено код, с которым оно работало» и «код действительно разрешил мою проблему» - это не одно и то же. – Tomalak

Смежные вопросы