我是角度js的新手,并且基本了解过滤器如何在角度js中工作。我很难对jSON数据数组进行排序,因为有各种参数必须对其进行排序。
我的JSON数组采用以下格式:
cnt
同一阵列的其他组合可以是:
[
{
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"
}
]
每个数组都有任何一个 type:1 的对象,并且在排序之后它必须始终是第一个元素。
之后,排序后的数组应该包含 emp_name:“”所有的元素。
在排序数组的最后,它应该包含根据 emp_name排序的所有剩余元素:“无论名称”
所以结果应该如下所示:
[
{
type:0,
emp_name:"",
connected_on:"9876543210"
},
{
type:1,
emp_name:"xyz",
connected_on:"9876543210"
},
{
type:0,
emp_name:"abcd",
connected_on:"9876543210"
}
]
任何人都可以帮我编写过滤器以获得所需的结果。谢谢。如果需要任何其他信息,请告诉我。
此外,connected_on是唯一值,因此我使用跟踪JSONarr.connected_on
答案 0 :(得分:2)
排序函数需要-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)
&#13;
答案 1 :(得分:0)
假设你的数组名称为emplist。你可以在这里搜索任何东西您将获得所需的结果。使用表格搜索数据。
<input type="text" ng-model="search">
<table>
<th>type</th>
<th>Emp name</th>
<th>connected on</th>
<tr ng-repeat="item in emplist|filter:search">
<td>{{item.type}}<td>
<td>{{item.emp_name}}<td>
<td>{{item.connected_on}}<td>
</tr>
</table>