javascript - 如何使用自定义排序顺序对 Angular js中的对象进行排序?

标签 javascript angularjs sorting

我想以自定义排序方式显示对象属性的数组。以下是数组

$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/

相关文章:

javascript - 按下 html 按钮时调用 init.js 中的 javascript 函数

javascript - 将参数 "0"传递给函数时接收 NaN

javascript - jquery - 如何通过单击另一个地方自动返回默认高度切换

MySQL 对文本和数字进行自然排序

C++ 按生命对敌人进行排序

javascript - 有没有一种方法可以初始化一个保留初始 HTML 的 Vue 对象

javascript - 如何相对于按钮定位 Angular Material 面板对话框?

javascript - 从 Angular ng-repeat 单击时将图像动态添加到 Bootstrap Modal 中

javascript - 为表格单元格外化 ng 类

MATLAB 按自定义条件排序