如何使用角度/离子分组和SUM json数据?

时间:2017-07-07 20:58:40

标签: javascript angularjs json ionic-framework

我有一个看起来像这样的JSON对象:

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

此JSON对象存储在$scope中。 我如何首先按 Class 对数据进行分组,然后将 StudentCount 包括在内?

因此生成的JSON对象看起来像这样 - 理想情况下存储为新的范围变量:

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

我到处搜索过,我唯一能找到的就是与ng-repeat一起做这件事的例子,但我在这里没有使用它。我只需按摩这些数据就可以在angular-chartjs中使用。

非常感谢你花时间看我的问题。

1 个答案:

答案 0 :(得分: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)

希望,这有助于:)