计算Angularjs中的列平均值

时间:2014-08-17 11:49:37

标签: angularjs average

我在angularjs平均计算问题上苦苦挣扎,这是情况

enter image description here

表的数据是从服务器中提取的并且自己定期更新(通过ajax),我想同时计算列的平均值并在表的最后一行显示结果。以下是显示表格的相关代码

        <tr ng-repeat="rowData in pData">
            <td ng-repeat="cellData in rowData track by $index">{{cellData}}</td>
        </tr>

        <tr>
            <td>{{averDatum}}</td>
            (need to calculate 6 column's average)
        </tr>

通过

显示cellData
$http({method: 'GET', url: './partials/getData.php?getTblData=1'}).
    success(function(data, status, headers, config) {
      // this callback will be called asynchronously
      // when the response is available
        $scope.pData = data.rowData;
        $scope.upData = data.dateData;
    });

数据格式为
enter image description here

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

这样的事情可以起作用(请检查如果这是正确的,我当然可以犯错,但我认为整个想法是可以理解的):

$http({method: 'GET', url: './partials/getData.php?getTblData=1'}).
     success(function(data, status, headers, config) {
         // this callback will be called asynchronously
         // when the response is available
         $scope.pData = data.rowData;
         $scope.upData = data.dateData;

         var n = $scope.pData.length;
         var m = $scope.pData[0].length;
         var sum = 0;

         for (var i = 0; i < m; i++) 
         {
             sum = 0;
             for (var j = 0; j < n; j++)
             {
                   sum += parseInt($scope.pData[j][i].replace('$', ''), 10);
             }
             $scope.pData[j + 1][i] = '$' + Math.ceil(sum / j);
         }

});

简介:

1)您将通过添加每列平均数的附加行来修改从http调用到达的数组。

2)为了做到这一点,你迭代每一列,计算这个列的总和(这是使用2'表示'循环)。在内循环结束时,我们通过将总和除以行数来计算平均值。

3)最后,您不必调整视图标记 - 计算出的平均值将仅附加到$ scope.pData。如果您需要单独的变量来存储平均值 - 只需创建它并修改它而不是修改$ scope.pData。