2017-02-15 3 views
0

私は角度が新しく、JSONを再グループ化したい。 angular.forEach()メソッドで行うことはできますか?AngularJsの各メソッドでJSONを再グループ化する

[ 
    { 
     "doc":{ 
     "Title":"Main", 
     "name":"Ajith", 
     "Day":"03", 
     "count":3 
     } 
    }, 
    { 
     "doc":{ 
     "Title":"starters", 
     "name":"Saji", 
     "Day":"01", 
     "count":39 
     } 
    }, 
    { 
     "doc":{ 
     "Title":"desert", 
     "name":"Sajeeb", 
     "Day":"02", 
     "count":63 
     } 
    }, 
    { 
     "doc":{ 
     "Title":"Main", 
     "name":"Suith", 
     "Day":"03", 
     "count":3 
     } 
    }, 
    { 
     "doc":{ 
     "Title":"starters", 
     "name":"Manu", 
     "Day":"01", 
     "count":9 
     } 
    } 
] 

私は次のように出力します。

{ 
    "order":[ 
     { 
     "Day":"01", 
     "Title":"starters", 
     "items":[ 
      { 
       "name":"Saji", 
       "count":39 
      }, 
      { 
       "name":"Manu", 
       "count":9 
      } 
     ] 
     }, 
     { 
     "Day":"02", 
     "Title":"desert", 
     "items":[ 
      { 
       "name":"Sajeeb", 
       "count":63 
      } 
     ] 
     }, 
     { 
     "Day":"03", 
     "Title":"Main", 
     "items":[ 
      { 
       "name":"Ajith", 
       "count":3 
      }, 
      { 
       "name":"Suith", 
       "count":3 
      } 
     ] 
     } 
    ] 
} 

angular.forEach()メソッドで再グループ化する。 助けてください。ありがとう。あなたはまだ、ソートの使用を確認する必要があります行くどちらの方法を

var days = []; 
angular.forEach(arr, function (val, key) { 
    var day = parseInt(val.doc.Day); 
    var item = { name: val.doc.name, count: val.doc.count }; 

    if (days[day]) 
     days[day].items.push(item); 
    else 
     days[day] = { Day: '0' + day, Title: val.doc.Title, items: [item]}; 
}); 

days.sort(function (x, y) { 
    return parseInt(x.Day) > parseInt(y.Day); 
}); 

var eventsinOrder = { order: days }; 

:あなたは本当に角度のforEachを必要としませんが、あなたは簡単にそれを置き換えることができます

答えて

1

https://jsfiddle.net/9fwtm0a0/4/

var days = []; 
arr.forEach(function(d) { 
    var day = parseInt(d.doc.Day); 
    var item = { name: d.doc.name, count: d.doc.count }; 

    if (days[day]) 
     days[day].items.push(item); 
    else 
    days[day] = { Day: '0' + day, Title: d.doc.Title, items: item]}; 
}); 

days.sort(function (x, y) { 
    return parseInt(x.Day) > parseInt(y.Day); 
}); 

var eventsinOrder = { order: days }; 

この結果オブジェクトを構築している間にソートを実行する関数(または同等のもの)

関連する問題