2017-03-26 11 views
1

動的に生成されたJSONデータを特定の番号でグループ化する必要があります。だから私は数値の変数を生成する方法がありますが、その数に基づいて項目をグループ化する必要があります。ここでxアイテムごとにJSONアイテムをグループ化する方法

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

私の現在のコードは次のとおりです:

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)); 

答えて

2

あなたが使用することができます私はこのようなすべての3つの項目やフォーマットによってグループにそれを必要とする

"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"}, 
] 

:これは、元のJSONですArray#reduceと入力し、i % 3がゼロの場合は新しいオブジェクトを挿入します。

項目の最後の要素にプロパティを追加します。

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

が魅力のように働いた@NinaScholz!ありがとうございました! – pixeloft

関連する問題