javascript - 有没有更好的方法来智能排序日期?

标签 javascript sorting date

我有一个日期数组,看起来像这样:

var dates = [
  { day: 14, month: 4 },
  { day: 28, month: 4 },
  { day: 29, month: 11 },
  { day: 2, month: 9 }
];

我想从现在是八月的 Angular 对它们进行排序。我的意思是,第 11 个月比第 4 个月更近。我想了很多,最后想出了this solution.
首先,由于连接 JSON 数组的问题,它实际上不起作用,但这是一个小问题。
我认为从效率或其他 Angular 来看,这是一个非常糟糕的方法。你能想出更好的办法吗?谢谢!

最佳答案

您可以查看这个JS Bin 。主要思想是获取当前月份并按当前月份偏移数组中的每个月。然后,如果结果为负,这意味着它是当前结果一个月后的结果,我会尝试弄清楚它的顺序是什么。

更改后的代码如下:

Dates.prototype.sort = function() {
  var date = new Date();
  var currentMonth = date.getMonth() + 1;
  for(var j = 0; j < this.arr.length - 1; j++) {
    for (var i = 0; i < this.arr.length - 1; i++) {
      var month = this.arr[i].month - currentMonth;
      var nextMonth = this.arr[i + 1].month - currentMonth;
      if(month < 0){
        month = 12 + month;
      }
      if(nextMonth < 0){
        nextMonth = 12 + nextMonth;
      }
      if (month > nextMonth) 
        this.switch(i, i + 1); 

      else if (month == nextMonth)
        if (this.arr[i].day > this.arr[i + 1].day)
          this.switch(i , i + 1);

    }
  }
};

关于javascript - 有没有更好的方法来智能排序日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25113909/

相关文章:

arrays - 区分排序算法

algorithm - 交换后的排序检查

Php 获取一个日期还剩多少天和几小时

php - Carbon 解析日期格式

java - 尴尬的 Java 日期创建行为

javascript - 在没有组件的vue js中拖放

javascript - 将数组值转换为对象键

javascript - 可以用这种方式在javascript中初始化一个对象吗?

javascript - 如何拆分大型 React 组件?

Java冒泡排序算法计时器问题