Javascript 获取分组数据angularjs之和-角度过滤器
我正在使用角度过滤器对数据进行分组。虽然我能够对数据进行分组并获得数据长度(Javascript 获取分组数据angularjs之和-角度过滤器,javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,我正在使用角度过滤器对数据进行分组。虽然我能够对数据进行分组并获得数据长度(orderfood),但我无法获得分组数据中的qty之和。我的 我得到的结果 Isnain Meals - 2 Chicken Burger - 2 我需要的结果 Isnain Meals - 4 //sum of qty of Isnain Meals from JSON data (1+3) Chicken Burger - 9 //sum of qty of Chicken Burger from JSON
orderfood
),但我无法获得分组数据中的qty
之和。我的
我得到的结果
Isnain Meals - 2
Chicken Burger - 2
我需要的结果
Isnain Meals - 4 //sum of qty of Isnain Meals from JSON data (1+3)
Chicken Burger - 9 //sum of qty of Chicken Burger from JSON data (3+6)
JSON数据
$scope.orders = [{
"_id": "56b0c315e179bb0e00a44dbf",
"orderfood": [{
"_id": "569d865bff1fe20e00f8ba97",
"qty": "1",
"confirm": true,
"price": 154,
"name": "Isnain Meals"
}, {
"_id": "569d865bff1fe20e00f8ba98",
"qty": "3",
"confirm": true,
"price": 154,
"name": "Isnain Meals"
}],
"content": "9176649143",
"created": "2016-02-02T14:54:13.926Z"
}, {
"_id": "56b06ed25b53250e00ccbd73",
"orderfood": [{
"_id": "569d84f04834c10e003dff36",
"qty": "6",
"confirm": true,
"price": 125,
"name": "Chicken Burger"
}],
"content": "6886058585",
"created": "2016-02-02T08:54:42.986Z"
}, {
"_id": "56b06ed25b53250e00ccbd74",
"orderfood": [{
"_id": "569d84f04834c10e003dff37",
"qty": "3",
"confirm": true,
"price": 125,
"name": "Chicken Burger"
}],
"content": "6886058585",
"created": "2016-02-02T08:54:42.986Z"
}];
控制器代码
$scope.getOrderFoods = function() {
var orderfood = [];
angular.forEach($scope.orders, function(order) {
angular.forEach(order.orderfood, function(orderfoo) {
if (orderfood.indexOf(orderfoo) == -1) {
orderfood.push(orderfoo);
}
})
});
return orderfood;
}
HTML
<div ng-repeat="(key,data) in getOrderFoods() | groupBy:'name'">
<p>{{key}} - {{data.length}}</p>
<!-- instead of the data.length, i need the sum of qty -->
</div>
{{key}}-{data.length}
my您可以使用javascript Array.reduce方法生成数量之和。这是你的电话号码
{{key}}-{reduce(data)}
$scope.reduce=函数(数据){
返回数据.reduce(函数(previousValue、currentValue、currentIndex、数组){
返回previousValue+parseInt(currentValue.qty);
}, 0);
}
在您的解决方案中使用了数据。由于groupBy
而返回数组长度而不是总qty
的长度可以基于groupBy条件生成数组
<div ng-repeat="(key,data) in getOrderFoods() | groupBy:'name'">
<p>{{key}} - {{data.length}}</p>
</div>
在控制器中:
$scope.getTotalQuantity = function(items) {
var total =0;
angular.forEach(items, function(item) {
total+= parseInt(item.qty);
});
return total;
}
<div ng-repeat="(key,data) in getOrderFoods() | groupBy:'name'">
<p>{{key}} - {{getTotalQuantity(data)}}</p>
</div>
$scope.getTotalQuantity = function(items) {
var total =0;
angular.forEach(items, function(item) {
total+= parseInt(item.qty);
});
return total;
}