2017-07-07 85 views
0

我有一個JSON對象,看起來像這樣:如何使用角/離子對json數據進行GROUP和SUM?

"Classes": [ 
    { 
     "ID": "MATH101", 
     "Class": "Math", 
     "StudentCount": "2" 
    }, 
    { 
     "ID": "MATH101", 
     "Class": "Math", 
     "StudentCount": "8" 
    }, 
    { 
     "ID": "ENGLISH101", 
     "Class": "English", 
     "StudentCount": "13" 
    }] 

此JSON對象存儲在$scope。 如何首先將數據按分類分組,然後SUM StudentCount

因此所產生的JSON對象會是這個樣子 - 理想存儲爲一個新的範圍變量:

"Classes": [ 
    { 
     "ID": "MATH101", 
     "Class": "Math", 
     "StudentCount": "10" 
    }, 
    { 
     "ID": "ENGLISH101", 
     "Class": "English", 
     "StudentCount": "13" 
    }] 

我搜索無處不在,我能找到的唯一的事情是結合這樣的例子與ng-repeat,但我沒有在這裏使用。我只需要按照這些數據在angular-chartjs中使用。

非常感謝您花時間看我的問題。

回答

1

轉換隻是一個邏輯部分,你的ng-repeat和所有你可以用它來在UI中呈現你想要的。

這裏我寫一個函數,會爲你

function populateSumArray(inputClasses) { 
    opClasses = []; 
    inputClasses.forEach(function(item) { 
     var existing = opClasses.find(function(each) { 
      return each.Class === item.Class; 
     }); 
     if (existing) { 
      existing.StudentCount = parseInt(existing.StudentCount) + parseInt(item.StudentCount); 
     } else { 
      opClasses.push(item); 
     } 
    }); 
    return opClasses; 
} 

做的工作,你可以調用此將其轉換到一個新的數組(計算值),並將其存儲等。無論您需要的。如果你想更新同一範圍變量,然後下面是一個例子

$scope.Classes = populateSumArray($scope.Classes) 

希望,它可以幫助:)

+0

感謝您的幫助!我得到inputClasses.forEach不是一個功能 任何想法? – NickyTheWrench

+0

傳遞一個數組給函數,你究竟傳遞了什麼? –

+0

我在名爲$ scope.classes的變量中有JSON對象。如何將此變量傳遞給您的函數以便它轉換JSON? – NickyTheWrench