Javascript 以角度生成JSON对象的聚合数组
这是我的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
$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']
的项目数,代码如下: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;
});