Angularjs 按角度对多维JSON排序
我从数据库中获取JSON,其结构如下:Angularjs 按角度对多维JSON排序,angularjs,sorting,ng-repeat,Angularjs,Sorting,Ng Repeat,我从数据库中获取JSON,其结构如下: "data": [ { "category": "1", "description": "hello" } ] Category 1 .... .... .... Category 3 .... .... $scope.hello = []; angular.forEach(data.data, function(value, key) { $scope.hello.push(value.ca
"data": [
{
"category": "1",
"description": "hello"
}
]
Category 1
....
....
....
Category 3
....
....
$scope.hello = [];
angular.forEach(data.data, function(value, key) {
$scope.hello.push(value.category+" "+value.description)
}
description
和category
都是动态的,因此我可以有5个对象具有category:1
和2个对象具有category:3
等。或者我可以有3个对象具有category:20
和25个对象具有category:8
我想创建如下HTML元素:
"data": [
{
"category": "1",
"description": "hello"
}
]
Category 1
....
....
....
Category 3
....
....
$scope.hello = [];
angular.forEach(data.data, function(value, key) {
$scope.hello.push(value.category+" "+value.description)
}
我可以创建如下字符串:
"data": [
{
"category": "1",
"description": "hello"
}
]
Category 1
....
....
....
Category 3
....
....
$scope.hello = [];
angular.forEach(data.data, function(value, key) {
$scope.hello.push(value.category+" "+value.description)
}
以便输出:
Category 1 hello
Category 1 hi
Category 1 bye
Category 3 sup
Category 3 yo
但我将如何将其转化为:
Category 1
hello
hi
bye
Category 3
sup
yo
javascript提供了一个函数。在此函数中,我将按两个属性对场地对象数组进行排序;姓名和地区
function sort(col, direction) {
switch (col) {
case "region":
{
sites.sort(function(s1, s2) {
var r = 0;
if (s1.region < s2.region)
r = -1;
else if (s1.region > s2.region)
r = 1;
else {
if (s1.name < s2.name)
r = -1;
else if (s1.name > s2.name)
r = 1;
}
return r;
});
break;
}
default:
{
sites.sort(function(s1, s2) {
var r = 0;
if (s1.name < s2.name)
r = -1;
else if (s1.name > s2.name)
r = 1;
else {
if (s1.region < s2.region)
r = -1;
else if (s1.region > s2.region)
r = 1;
}
return r;
});
}
}
if (direction === "desc") {
this.sites.reverse();
}
}
函数排序(列、方向){
开关(col){
案例“区域”:
{
站点。排序(功能(s1、s2){
var r=0;
if(s1.区域s2.区域)
r=1;
否则{
if(s1.names2.name)
r=1;
}
返回r;
});
打破
}
违约:
{
站点。排序(功能(s1、s2){
var r=0;
if(s1.names2.name)
r=1;
否则{
if(s1.区域s2.区域)
r=1;
}
返回r;
});
}
}
如果(方向==“描述”){
this.sites.reverse();
}
}
javascript提供了一个函数。在此函数中,我将按两个属性对场地对象数组进行排序;姓名和地区
function sort(col, direction) {
switch (col) {
case "region":
{
sites.sort(function(s1, s2) {
var r = 0;
if (s1.region < s2.region)
r = -1;
else if (s1.region > s2.region)
r = 1;
else {
if (s1.name < s2.name)
r = -1;
else if (s1.name > s2.name)
r = 1;
}
return r;
});
break;
}
default:
{
sites.sort(function(s1, s2) {
var r = 0;
if (s1.name < s2.name)
r = -1;
else if (s1.name > s2.name)
r = 1;
else {
if (s1.region < s2.region)
r = -1;
else if (s1.region > s2.region)
r = 1;
}
return r;
});
}
}
if (direction === "desc") {
this.sites.reverse();
}
}
函数排序(列、方向){
开关(col){
案例“区域”:
{
站点。排序(功能(s1、s2){
var r=0;
if(s1.区域s2.区域)
r=1;
否则{
if(s1.names2.name)
r=1;
}
返回r;
});
打破
}
违约:
{
站点。排序(功能(s1、s2){
var r=0;
if(s1.names2.name)
r=1;
否则{
if(s1.区域s2.区域)
r=1;
}
返回r;
});
}
}
如果(方向==“描述”){
this.sites.reverse();
}
}
使用angular.filter模块的groupBy了解更多信息,请参阅此答案
var-app=angular.module(“app”,['angular.filter']))
app.controller('ctrl',['$scope',函数($scope){
$scope.data=[
{
“类别”:“1”,
“说明”:“你好”
},
{
“类别”:“1”,
“说明”:“嗨”
},
{
“类别”:“3”,
“说明”:“海”
},
{
“类别”:“1”,
“说明”:“你好”
},
{
“类别”:“3”,
“说明”:“你好”
},
{
“类别”:“1”,
“说明”:“海”
}
]
}]);代码>
类别:{{key}}
-
{{d.description}}
使用angular.filter模块的groupBy了解更多信息,请参阅此答案
var-app=angular.module(“app”,['angular.filter']))
app.controller('ctrl',['$scope',函数($scope){
$scope.data=[
{
“类别”:“1”,
“说明”:“你好”
},
{
“类别”:“1”,
“说明”:“嗨”
},
{
“类别”:“3”,
“说明”:“海”
},
{
“类别”:“1”,
“说明”:“你好”
},
{
“类别”:“3”,
“说明”:“你好”
},
{
“类别”:“1”,
“说明”:“海”
}
]
}]);代码>
类别:{{key}}
-
{{d.description}}
您应该尝试在服务器端对记录进行分组,我的意思是从哪里获得JSON数组。在客户端,只需循环和显示。这是最好的实践,也是优化的方法,您应该尝试在服务器端对记录进行分组,我的意思是从哪里获得JSON数组。在客户端,只需循环和显示。这是最佳实践,也是优化的wayWait,