我有一个日期数组,看起来像这样:
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/