我想以自定义排序方式显示对象属性的数组。以下是数组
$scope.weekDays = [
{
"day" : "TUESDAY",
"count": 10
},
{
"day" : "MONDAY",
"count": 20
},
{
"day" : "WEDNESDAY",
"count": 30
},
{
"day" : "SUNDAY",
"count": 60
}];
如果我们从 weekDays
打印日期,它就像星期二、星期一、星期三、星期日
但我想按“周日”、“周一”、“周五”、“周二”、“周三”的顺序显示
为此我做了以下事情
$scope.orde = ["SUNDAY", "MONDAY", "FRIDAY", "TUESDAY","WEDNESDAY"];
$scope.Sorted = [];
$scope.SortCustomOrder = function() {
var _c =0;
for(var i = 0; i < $scope.orde.length; i++) {
for (var _i = 0; _i < $scope.weekDays.length; _i++) {
if($scope.weekDays[_i].day==$scope.orde[i]) {
$scope.Sorted[_c] = $scope.weekDays[_i];
_c++;
}
}
}
};
并打印$scope.Sorted。它打印了我所说的内容。
有什么方法可以简化这个方法或 AngularJS 中的任何其他方法吗?
最佳答案
您可以使用内置的 orderBy
过滤器,如下所示:
app.controller('MainCtrl', function($scope, orderByFilter) {
$scope.weekDays = [{
"day": "TUESDAY",
"count": 10
}, {
"day": "MONDAY",
"count": 20
}, {
"day": "WEDNESDAY",
"count": 30
}, {
"day": "SUNDAY",
"count": 60
}];
var dateOrders = ["SUNDAY", "MONDAY", "FRIDAY", "TUESDAY", "WEDNESDAY"];
$scope.Sorted = orderByFilter($scope.weekDays, function(item) {
return dateOrders.indexOf(item.day);
});
});
Plunker 示例: http://plnkr.co/edit/IZfiavmZEpHf4hILdjQs?p=preview
关于javascript - 如何使用自定义排序顺序对 Angular js中的对象进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157482/