js時間日期排序程式碼例項

admin發表於2017-04-15

分享一段程式碼例項,它實現了時間日期排序效果。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var arr = ['2016-09-09', '2015-12-30', '2016-01-04', '2011-09-12'];
Array.prototype.sortFn = function() {
  var arr2 = []
  var json = {};
  for (var index = 0, len = this.length; index < len; index++) {
    json[new Date(this[index]).getTime()] = this[index];
    arr2.push(new Date(this[index]).getTime());
  }
  arr2.sort();
  for (var j = 0; j < arr2.length; j++) {
    this[j] = json[arr2[j]];
  }
  return this;
}
console.log(arr.sortFn())

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).var arr = ['2016-09-09', '2015-12-30', '2016-01-04', '2011-09-12'],陣列儲存的是要排序的時間日期。

(2).Array.prototype.sortFn = function() {},為陣列物件例項新增一個例項方法,它實現了排序效果。

(3).var arr2 = [],宣告一個陣列用來宣告時間戳。

(4).var json = {},宣告一個物件,物件屬性是時間戳,屬性值是時間日期在原陣列中的索引。

(5).for (var index = 0, len = this.length; index < len; index++) {},通過for迴圈進行遍歷。

(6).json[new Date(this[index]).getTime()] = this[index],時間戳作為屬性,日期作為屬性值。

(7).arr2.push(new Date(this[index]).getTime()),把時間戳壓入陣列。

(8).arr2.sort(function sortFunction(a,b){

  return a-b;

}),實現陣列值由小到大排序。

(9).for (var j = 0; j < arr2.length; j++) {

  arr[j] = json[arr2[j]];

}

(10).for (var j = 0; j < arr2.length; j++) {

  this[j] = json[arr2[j]];

},由於arr2中的時間戳是由小到大排序的,所以arr陣列的內容也會被重置為由小到大排序。

(11).return this,可以實現鏈式呼叫。

二.相關閱讀:

(1).prototype參閱javascript prototype原型一章節。

(2).getTime()參閱javascript getTime()一章節。

(3).push()參閱javascript push()一章節。

(4).sort()參閱javascript sort()一章節。

相關文章