如何仅使用相同的用户名显示本地存储中的值总和?

时间:2017-12-28 07:38:12

标签: angularjs jsp angular-local-storage

我在下面有本地存储值:

[ {"id":1, "amount":24000000, "users":{"username":"user1"}}, {"id":2, "amount":10000000, "users":{"username":"user1"}}, {"id":3, "amount":20000000, "users":{"username":"user2"}} ]

我使用JSPAngularJS中显示我的本地存储。

如何仅使用相同的用户名对本地存储中的金额值进行求和?。

我的控制器:

$scope.listOfCart = CartService.getAllCarts()||[];
$scope.items = $scope.listOfCart

我的JSP:

<tr data-ng-repeat="cart in items">
    <td>{{cart.users.username}}</td>
    <td>{{cart.amount}}</td>
</tr>

那么如何仅使用相同的用户名显示总和值金额?我尝试使用forEach但显示所有金额用户名。我想显示的金额只有相同的用户名。

2 个答案:

答案 0 :(得分:2)

这可能会对你有所帮助。我使用嵌套的angular#forEach,在汇总具有相同用户名的金额后,将其从数组中删除。

&#13;
&#13;
var app = angular.module("myApp",[]);

app.controller('MainCtrl', function($scope) {
 $scope.data = [{
  "id": 1,
  "amount": 24000000,
  "users": {
    "username": "user1"
  }
}, {
  "id": 2,
  "amount": 10000000,
  "users": {
    "username": "user1"
  }
}, {
  "id": 3,
  "amount": 20000000,
  "users": {
    "username": "user2"
  }
}];

$scope.totalAmount = 0; 
angular.forEach($scope.data,function(item,index){
  var temp = $scope.data[index];
  $scope.totalAmount =temp.amount;
  var tempIndex = index;
  angular.forEach($scope.data,function(item,index){
    if (index == tempIndex){ 
     return;
   }else{
     if (temp.users.username == item.users.username){ 
       $scope.totalAmount += item.amount; 
       $scope.data.splice(index, 1); //removing after summing
     }
   }
  });
  temp.amount = $scope.totalAmount;
  $scope.totalAmount = 0;
 });
 
});
&#13;
<script data-require="angularjs@1.5.8" data-semver="1.5.8" src="https://opensource.keycdn.com/angularjs/1.5.8/angular.min.js"></script>
<body ng-app="myApp" ng-controller="MainCtrl">
  <table>
   <tr data-ng-repeat="cart in data track by $index">
    <td>{{cart.users.username}}</td>
    <td>{{cart.amount}}</td>
   </tr>
  </table>
</body>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用Array#reduce对属于特定用户的项目求和:

&#13;
&#13;
sumFor
&#13;
&#13;
&#13;

现在,您可以将函数$scope定义为print(request.user.is_authenticated) 的成员,并从模板中调用它。