Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取分组数据angularjs之和-角度过滤器_Javascript_Angularjs_Angular Filters - Fatal编程技术网

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;
}