Pra*_*inz 5 arrays sorting json angularjs angularjs-filter
我是角度js的新手,并且基本了解过滤器如何在角度js中工作.我很难对我的jSON数据数组进行排序,因为它有各种参数需要对它进行排序.
我的JSON数组采用以下格式:
[
{
type:0,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:1,
emp_name:"",
connected_on:"9876543210"
},
{
type:1,
emp_name:"abcd",
connected_on:"9876543210"
},
{
type:0,
emp_name:"pqr",
connected_on:"9876543210"
}
]
Run Code Online (Sandbox Code Playgroud)
同一阵列的其他组合可以是:
[
{
type:0,
emp_name:"",
connected_on:"9876543210"
},
{
type:1,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:0,
emp_name:"abcd",
connected_on:"9876543210"
}
]
Run Code Online (Sandbox Code Playgroud)
每个数组都有任何一个对象,其中 type:1,将在那里,在排序之后它必须始终是第一个元素.
之后,排序后的数组应该包含emp_name:""的所有元素.
在排序数组的最后,它应该包含根据emp_name排序的所有剩余元素:"无论名称"
所以结果应该如下所示:
[
{
type:1,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:0,
emp_name:"",
connected_on:"9876543210"
},
{
type:0,
emp_name:"abcd",
connected_on:"9876543210"
}
]
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我写过滤器以获得所需的结果.谢谢.如果需要任何其他信息,请告诉我.
此外,connected_on是唯一值,因此我使用JSONarr.connected_on跟踪
排序函数期望-1, 0,-1作为结果。-1表示之前,0表示没有变化,1表示之后。
现在您必须根据 2 个参数进行排序,因此最好有一个算术值。根据优先级具有更高的价值。所以在下面的情况下,我们必须先基于 排序type,然后基于 排序emp_name。
要按升序排序,请返回 1(表示较大)和 -1(表示较小)。对于降序反转的值。现在将这两个键组合起来,您将得到如下所示的结果:
var data=[{type:0,emp_name:"xyz",connected_on:"9876543210"},{type:1,emp_name:"",connected_on:"9876543210"},{type:1,emp_name:"abcd",connected_on:"9876543210"},{type:0,emp_name:"pqr",connected_on:"9876543210"}];
data.sort(function(a, b) {
var _a = a.type > b.type ? -10 : a.type < b.type ? 10 : 0;
var _b = a.emp_name > b.emp_name ? 1 : a.emp_name < b.emp_name ? -1 : 0;
return _a + _b;
});
console.log(data)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |