我在下面有本地存储值:
[ {"id":1, "amount":24000000, "users":{"username":"user1"}}, {"id":2, "amount":10000000, "users":{"username":"user1"}}, {"id":3, "amount":20000000, "users":{"username":"user2"}} ]
我使用JSP
在AngularJS
中显示我的本地存储。
如何仅使用相同的用户名对本地存储中的金额值进行求和?。
我的控制器:
$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但显示所有金额用户名。我想显示的金额只有相同的用户名。
答案 0 :(得分:2)
这可能会对你有所帮助。我使用嵌套的angular#forEach
,在汇总具有相同用户名的金额后,将其从数组中删除。
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;
答案 1 :(得分:1)
您可以使用Array#reduce
对属于特定用户的项目求和:
sumFor
&#13;
现在,您可以将函数$scope
定义为print(request.user.is_authenticated)
的成员,并从模板中调用它。