Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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 以角度生成JSON对象的聚合数组_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 以角度生成JSON对象的聚合数组

Javascript 以角度生成JSON对象的聚合数组,javascript,angularjs,json,Javascript,Angularjs,Json,这是我的JSON对象 $scope.data1 = { "totalSize": 5, "data": [{ "id": "AGGAA5V0HGQXEAOJJQitemWOI41FJLY2S", "price": 100.00, "desc": "Onion and Tomato toppings Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima

这是我的JSON对象

    $scope.data1 = {
    "totalSize": 5,
    "data": [{
        "id": "AGGAA5V0HGQXEAOJJQitemWOI41FJLY2S",
        "price": 100.00,
        "desc": "Onion and Tomato toppings Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima molestiae cum optio praesentium doloribus, inventore nobis nostrum sequi quidem corporis iure ut natus nemo maxime vitae assumenda aliquam blanditiis. Alias!",
        "status": true,
        "item": "Piza",
        "type": "Veg"
    }, {
        "id": "AGGAA5V0HGQXEAOJJQ9HOI41F9LY2T",
        "price": 90.00,
        "desc": null,
        "status": 0,
        "item": "Pasta",
        "type": "Veg"
    }, {
        "id": "AGGAA5V0HGQXEAOJJQKBOI41G3LY2U",
        "price": 150.00,
        "desc": null,
        "status": 0,
        "item": "Italian Piza",
        "type": "Veg"
    }, {
        "id": "AGGAA5V0HGQXEAOJJS5ZOI43C1LY2V",
        "price": 300.00,
        "desc": null,
        "status": 0,
        "item": "Aloo Paratha",
        "type": "Non-Veg"
    }, {
        "id": "AGGAA5V0HGQXEAOJJSZHOI43L9LY2W",
        "price": 50.00,
        "desc": null,
        "status": 0,
        "item": "Maggie",
        "type": "Veg"
    }]
};
使用这个,我试图生成以下信息

  • 我为每个类别生成了一个数组
    series=['Veg','Non-Veg']
    的项目数,代码如下:
  • 我正在尝试生成另一个arry SeriesCount,其预期值为

    SeriesCount = [4,1] 
    
    不知怎么还没有达到结果,谁能帮我一下吗

  • 要生成成本桶和相应的物料计数。。 期望

     CostBucketSeries = ['0-100' , '101-300' , '> 300' ];
     CostBucketSeriesCount =[3,2,0];
    
  • 使用角度图,我想展示这个。。。
    提前感谢。

    Q:我正在尝试生成另一个arry序列计数,其预期值为

    A:有很多方法可以获得序列计数。例如,迭代
    data1.data
    ,并有一个对象跟踪每种类型项目的计数

    在下面的示例中,我使用
    map
    forEach
    API的组合来解决计数问题。这是一个优雅的解决方案,因为它不需要你知道你有什么类型的项目前期

    注意:您可能希望直接跳转到解决方案。请参见代码中的
    //解决方案
    注释

    示例代码

    var data1 = {
      "totalSize": 5,
      "data": [{
        "id": "AGGAA5V0HGQXEAOJJQitemWOI41FJLY2S",
        "price": 100.00,
        "desc": "Onion and Tomato toppings Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima molestiae cum optio praesentium doloribus, inventore nobis nostrum sequi quidem corporis iure ut natus nemo maxime vitae assumenda aliquam blanditiis. Alias!",
        "status": true,
        "item": "Piza",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJQ9HOI41F9LY2T",
        "price": 90.00,
        "desc": null,
        "status": 0,
        "item": "Pasta",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJQKBOI41G3LY2U",
        "price": 150.00,
        "desc": null,
        "status": 0,
        "item": "Italian Piza",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJS5ZOI43C1LY2V",
        "price": 300.00,
        "desc": null,
        "status": 0,
        "item": "Aloo Paratha",
        "type": "Non-Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJSZHOI43L9LY2W",
        "price": 50.00,
        "desc": null,
        "status": 0,
        "item": "Maggie",
        "type": "Veg"
      }]
    };
    
    var series = (data1.data).reduce(function(res, obj) {
      if (!(obj.type in res))
        res.__array.push(res[obj.type] = obj.type);
      else {
      }
      return res;
    }, {__array:[]}).__array;
    
    // Solution:
    var seriesChart = series.map(type => {
      var count = 0;
      data1.data.forEach( item => {
        if(item.type === type) {
          count += 1;
        }
      });
      return count;
    });
    
    输出:

    [4,1]

    我在那里得到的是,我首先利用你在
    系列
    数据中得到的,通过遍历其中的单个类型,循环遍历
    data1.data中的实体,如果它们与类型匹配,则递增。在
    map
    的末尾,您将得到一个包含计数的数组

    注意:此解决方案不考虑性能,因为您可能注意到它的时间复杂度为O(n2)

    一种可能的改进方法是将
    forEach
    调用替换为
    filter
    。这样,您就不会重新计算以前已处理过的项目

    API的参考资料:


    不,我只是想知道他们的人数。系列=['Veg','Non-Veg'],系列计数=[4,1]。。这将发送到角形图表请清楚地提及问题,您正在添加,请在评论部分编辑您的问题是的,我想在那里
    var data1 = {
      "totalSize": 5,
      "data": [{
        "id": "AGGAA5V0HGQXEAOJJQitemWOI41FJLY2S",
        "price": 100.00,
        "desc": "Onion and Tomato toppings Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima molestiae cum optio praesentium doloribus, inventore nobis nostrum sequi quidem corporis iure ut natus nemo maxime vitae assumenda aliquam blanditiis. Alias!",
        "status": true,
        "item": "Piza",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJQ9HOI41F9LY2T",
        "price": 90.00,
        "desc": null,
        "status": 0,
        "item": "Pasta",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJQKBOI41G3LY2U",
        "price": 150.00,
        "desc": null,
        "status": 0,
        "item": "Italian Piza",
        "type": "Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJS5ZOI43C1LY2V",
        "price": 300.00,
        "desc": null,
        "status": 0,
        "item": "Aloo Paratha",
        "type": "Non-Veg"
      }, {
        "id": "AGGAA5V0HGQXEAOJJSZHOI43L9LY2W",
        "price": 50.00,
        "desc": null,
        "status": 0,
        "item": "Maggie",
        "type": "Veg"
      }]
    };
    
    var series = (data1.data).reduce(function(res, obj) {
      if (!(obj.type in res))
        res.__array.push(res[obj.type] = obj.type);
      else {
      }
      return res;
    }, {__array:[]}).__array;
    
    // Solution:
    var seriesChart = series.map(type => {
      var count = 0;
      data1.data.forEach( item => {
        if(item.type === type) {
          count += 1;
        }
      });
      return count;
    });