2017-07-07 3 views
0

Ich habe ein JSON-Objekt, das wie folgt aussieht:Wie GROUP und SUM JSON-Daten mit eckigen/ionischen?

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

Dieses JSON-Objekt in $scope gespeichert ist. Wie kann ich zuerst die Daten durch Klasse gruppieren und dann SUM die StudentCount?

So das resultierende JSON-Objekt würde in etwa so aussehen - ideal als neuen Bereich Variable gespeichert:

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

ich überall gesucht habe, und das einzige, was ich in Verbindung finden kann dies sind Beispiele für tun mit einem ng-repeat, aber ich benutze das hier nicht. Ich muss nur diese Daten für die Verwendung in eckigen Charts einmassieren.

Vielen Dank, dass Sie sich die Zeit genommen haben, sich meine Frage anzusehen.

Antwort

1

die Umwandlung ist nur ein logischer Teil, Ihre ng-repeat und alles, was Sie dann verwenden können, um das in UI wie Sie wollen.

hier schreibe ich eine Funktion, die die Arbeit für Sie

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

tun und Sie können dies es in ein neues Array zu verwandeln rufen (berechnet) und speichern Sie es wo auch immer Sie brauchen. Wenn Sie den gleichen Umfang Variable aktualisieren möchten hier dann ist ein Beispiel

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

Hoffnung, es hilft :)

+0

Vielen Dank für Ihre Hilfe! Ich erhalte inputClasses.forEach ist keine Funktion Irgendwelche Ideen? – NickyTheWrench

+0

übergeben Sie ein Array an die Funktion, was genau passieren Sie? –

+0

Ich habe das JSON-Objekt in einer Variablen namens $ scope.classes. Wie übergebe ich diese Variable an Ihre Funktion, so dass sie JSON transformiert? – NickyTheWrench