ng对内部有数组的复杂对象进行重复排序



我有一个这样的结构,需要按Locations.Address.distance 排序

{
"Id": "123",
"Type": "someType",          
"Locations": [{
"Address": {
"Line1": "111 test dr",
"City": "pope",
"State": "AZ",
"PostalCode": {
"Part1": "87212"
} 
},
"Distance": "0.7" }]  
},
{
"Id": "456",
"Type": "someType",          
"Locations": [{
"Address": {
"Line1": "777 test dr",
"City": "pope",
"State": "AZ",
"PostalCode": {
"Part1": "87212"
} 
},
"Distance": "0.1" }]  
}

位置数组将始终只有一个项目。我想排序,使id=456的第二个对象显示为第一个元素,因为它的距离=0.1,小于距离=0.7的第一个元素。我尝试过这样的方法,但不起作用:

sortedList =filter('orderBy')($scope.responseArray,'Locations.this[0].Distance'], false);

通过使用下面的过滤器

var result=$filter('orderBy')(this.items, 'Locations[0].Distance')

https://stackblitz.com/edit/js-sort-complex-array?file=index.js

另一种方法是使用javascriptsort((方法,您可以编写自己的逻辑来对进行排序

var result = items.sort(function (a, b) {
var distance1 = parseFloat(a.Locations[0].Distance); 
var distance2 = parseFloat(b.Locations[0].Distance); 
if (distance1 < distance2) {
return -1;
}
if (distance1 > distance2) {
return 1;
}

return 0;
});

工作演示

https://stackblitz.com/edit/angularjs-complex-filter?file=home/home.controller.js

诀窍是在不使用"this"的情况下引用Locations数组中的第一个项目:

sortedList = $filter('orderBy')($scope.pharmacyResponse, Name.LastName','Locations[0].Distance'], false);

最新更新