如何在angularjs中对月份和年份进行排序

时间:2018-06-14 09:19:05

标签: javascript angularjs

我有一个包含月份和年份列的表格。我该如何排序日期和年份。请检查小提琴。

在这种情况下,日期格式为“MMMM yyyy”。我的要求是,例如,

如果我的日期是“2016年8月”,“2015年9月”和“2018年1月”。在这里,我想根据年份对日期进行排序。所以结果应该是这样的, “2015年9月”,“2016年8月”和“2018年1月”。

我怎样才能在angularjs中这样做。

jsfiddle

   var app = angular.module('app', [])
       .controller('appController', appController);

   appController.$inject = ['$scope', '$window'];

   function appController($scope, $window) {

       $scope.title = "date sorting example";

       $scope.sortType = "name";
       $scope.sortReverse = true;

       var dateA = new Date("02/06/2016");
       dateA.setDate(dateA.getDate() + 2);
       var dateB = new Date("07/06/2017");
       dateB.setDate(dateB.getDate() + 4);
       var dateC = new Date("08/06/2016");
       dateC.setDate(dateC.getDate() + 7);
       var dateD = new Date("04/06/2018");
       dateD.setDate(dateD.getDate() + 20);

       $scope.allItems = [{
           date: dateA,
           name: "A"
       }, {
           date: dateB,
           name: "B"
       }, {
           date: dateC,
           name: "C"
       }, {
           date: dateD,
           name: "D"
       }];

   };
<div ng-controller="appController">

    <h1>This is my {{title}}</h1>
    <table class="table table-striped">
        <thead>
            <td data-ng-click="sortType = name; sortReverse = !sortReverse;">
                Date
            </td>
            <td data-ng-click="sortType = name; sortReverse = !sortReverse;">
                Name
            </td>
        </thead>
        <tbody>
            <tr ng-repeat="item in allItems">
                <td>{{item.date | date:"MMMM yyyy"}}</td>
                <td>{{item.name}}</td>
            </tr>
        </tbody>
    </table>

</div>

1 个答案:

答案 0 :(得分:0)

使用Array.sort

&#13;
&#13;
var dateA = new Date("02/06/2016");
dateA.setDate(dateA.getDate() + 2);
var dateB = new Date("07/06/2017");
dateB.setDate(dateB.getDate() + 4);
var dateC = new Date("08/06/2016");
dateC.setDate(dateC.getDate() + 7);
var dateD = new Date("04/06/2018");
dateD.setDate(dateD.getDate() + 20);

let allItems = [{date: dateA,name: "A"}, {date: dateB,name: "B"}, {date: dateC,name: "C"}, {date: dateD,name: "D"}];

allItems.sort((a,b) => a.date - b.date);

console.log(allItems);
&#13;
&#13;
&#13;