2017-03-26 2 views
1

Ich habe einige dynamisch generierte JSON-Daten, die ich nach einer bestimmten Nummer gruppieren muss. Ich habe also eine Möglichkeit, die Variable für die Nummer zu generieren, muss aber die Elemente basierend auf dieser Nummer gruppieren. Dies ist die ursprüngliche JSON:So gruppieren Sie JSON-Elemente alle x Elemente

"items":[ 
    {"name":"School","value":"sdf"}, 
    {"name":"Year","value":"dsf"}, 
    {"name":"GPA","value":"Sdfdsf"}, 
    {"name":"School","value":"sdf"}, 
    {"name":"Year","value":"dsf"}, 
    {"name":"GPA","value":"Sdfdsf"}, 
] 

ich es mit allen drei Elemente und das Format wie diese Gruppe benötigen:

"items":[ 
    "item":{ 
    "School":"sdf", 
    "Year":"dsf", 
    "GPA":"Sdfdsf" 
    }, 
    "item":{ 
    "School":"sdf", 
    "Year":"dsf", 
    "GPA":"Sdfdsf" 
    } 
] 

Hier ist meine aktuellen Code:

var newData = "items": []; 

    jQuery('.dynamicRow input').each(function() { 
     var dName = jQuery(this).closest('input').attr('name'); 
     var dValue = jQuery(this).closest('input').val(); 
     var obj = { 
      name: dName, 
      value: dValue 
     }; 

     newData.items.push(obj); 
    }); 

    jQuery('#debug').text(JSON.stringify(newData)); 

Antwort

2

Sie verwenden könnten Array#reduce und ein neues Objekt einfügen, wenn i % 3 Null ist.

Fügen Sie die Eigenschaft zum letzten Elementeelement hinzu.

var data = { "items": [{ "name": "School", "value": "sdf" }, { "name": "Year", "value": "dsf" }, { "name": "GPA", "value": "Sdfdsf" }, { "name": "School", "value": "sdf" }, { "name": "Year", "value": "dsf" }, { "name": "GPA", "value": "Sdfdsf" }] }, 
 
    result = { 
 
     items: data.items.reduce(function (r, a, i) { 
 
      if (!(i % 3)) { 
 
       r.push({}); 
 
      } 
 
      r[r.length - 1][a.name] = a.value; 
 
      return r; 
 
     }, []) 
 
    }; 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Arbeitete wie ein Charme @NinaScholz! Vielen Dank! – pixeloft

Verwandte Themen