AngularJs 中的数据分组
Grouping Of Data in AngularJs
我正在为餐厅构建网站。在网站上,我在页面上呈现餐厅菜单。
我从服务器获取的菜单项 Json 如下所示:-
{
"_id" : ObjectId("54c3c6e6cd7fe7df22cae87e"),
"restaurant" : ObjectId("54b3a7ef613e89f64654f2b3"),
"name" : "Pasta",
"itemCode" : "PST",
"price" : 240,
"sellingPrice" : 280,
"cuisine" : "Ittalian",
"category" : "starter",
"type" : "non-veg",
"created" : ISODate("2015-01-24T16:23:02.652Z"),
"Head" : pasta
"__v" : 0
}
所以基本上要求是根据 head 字段(可以是汤、披萨、意大利面等)对菜单项进行分组。
这样所有 "head" 的项目:"soups" 将一起列出,所有 "head" 的项目:"pizza" 将一起列出。
我想到的方法是通过设计自定义过滤器,我将在其中传递所有唯一的 "head" 属性,然后我将相应地获取数据。
只需要一种更好、更优化的方法来应对这种情况。
var dishesPerHead = {};
var heads = [];
angular.forEach(dishes, function(dish) {
var dishesForHead = dishesPerHead[head];
if (!dishesForHead) {
dishesForHead = [];
heads.push(dish.head);
dishesPerHead[dish.head] = dishesForHead;
}
dishesForHead.push(dish);
}
现在您有一组不同的 heads
,对于每个头,dishesPerHead
包含具有该头的盘子数组。
根据调用过滤器的频率,您可能应该只对数据进行后处理并创建一个新的结果集,并按正确的值分组。像(未经测试):
var jsonResults = [{head:'pasta',...},{head:'soups',...}];
, jsonResultsProcessed = { };
, rec
for(var i=0; i<jsonResults.length; i++) {
rec = jsonResults[i];
if(!jsonResultsProcessed[rec.head]) {
jsonResultsProcessed[rec.head] = [ rec ];
} else {
jsonResultsProcessed[rec.head].push(rec);
}
}
$scope.results = jsonResultsProcessed;
然后在您看来,您可以只参考 results.pizza 或其他内容。
我正在为餐厅构建网站。在网站上,我在页面上呈现餐厅菜单。
我从服务器获取的菜单项 Json 如下所示:-
{
"_id" : ObjectId("54c3c6e6cd7fe7df22cae87e"),
"restaurant" : ObjectId("54b3a7ef613e89f64654f2b3"),
"name" : "Pasta",
"itemCode" : "PST",
"price" : 240,
"sellingPrice" : 280,
"cuisine" : "Ittalian",
"category" : "starter",
"type" : "non-veg",
"created" : ISODate("2015-01-24T16:23:02.652Z"),
"Head" : pasta
"__v" : 0
}
所以基本上要求是根据 head 字段(可以是汤、披萨、意大利面等)对菜单项进行分组。
这样所有 "head" 的项目:"soups" 将一起列出,所有 "head" 的项目:"pizza" 将一起列出。
我想到的方法是通过设计自定义过滤器,我将在其中传递所有唯一的 "head" 属性,然后我将相应地获取数据。
只需要一种更好、更优化的方法来应对这种情况。
var dishesPerHead = {};
var heads = [];
angular.forEach(dishes, function(dish) {
var dishesForHead = dishesPerHead[head];
if (!dishesForHead) {
dishesForHead = [];
heads.push(dish.head);
dishesPerHead[dish.head] = dishesForHead;
}
dishesForHead.push(dish);
}
现在您有一组不同的 heads
,对于每个头,dishesPerHead
包含具有该头的盘子数组。
根据调用过滤器的频率,您可能应该只对数据进行后处理并创建一个新的结果集,并按正确的值分组。像(未经测试):
var jsonResults = [{head:'pasta',...},{head:'soups',...}];
, jsonResultsProcessed = { };
, rec
for(var i=0; i<jsonResults.length; i++) {
rec = jsonResults[i];
if(!jsonResultsProcessed[rec.head]) {
jsonResultsProcessed[rec.head] = [ rec ];
} else {
jsonResultsProcessed[rec.head].push(rec);
}
}
$scope.results = jsonResultsProcessed;
然后在您看来,您可以只参考 results.pizza 或其他内容。