我在angularjs平均计算问题上苦苦挣扎,这是情况
表的数据是从服务器中提取的并且自己定期更新(通过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;
});
数据格式为
谢谢大家的帮助!
答案 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。