依日期屬性對物件陣列進行排序
要依照日期屬性對物件陣列進行排序,可以使用JavaScript 的sort() 函數與自訂比較器結合使用。該過程涉及比較日期值並根據其順序傳回負值、正值或零值。
簡單答案:
array.sort(function(a, b) { return new Date(b.date) - new Date(a.date); });
此比較器建立一個兩個日期的日期物件並減去它們的值。負值表示 a 比 b 更接近當前日期,正值表示 b 更接近,零表示相等。
通用答案:
array.sort(function(o1, o2) { if (sort_o1_before_o2) return -1; else if (sort_o1_after_o2) return 1; else return 0; });
這種更通用的方法允許透過定義在之前或之後對 o1進行排序的單獨條件來自訂排序順序o2.
強大的答案:
一個強大的解是在所有陣列上使用Schwartzian 轉換來定義自訂的不可列舉sortBy 函數:
(function() { if (typeof Object.defineProperty === 'function') { try { Object.defineProperty(Array.prototype, 'sortBy', { value: sb }); } catch (e) {} } if (!Array.prototype.sortBy) Array.prototype.sortBy = sb; function sb(f) { for (var i = this.length; i;) { var o = this[--i]; this[i] = [].concat(f.call(o, o, i), o); } this.sort(function(a, b) { for (var i = 0, len = a.length; i < len; ++i) { if (a[i] != b[i]) return a[i] < b[i] ? -1 : 1; } return 0; }); for (var i = this.length; i;) { this[--i] = this[i][this[i].length - 1]; } return this; } })();
這可以實現簡潔而強大的排序:
array.sortBy(function(o) { return o.date });
您還可以擴展此方法,透過在比較器函數中傳回值數組來處理排序過程中的多個條件。
以上是如何在 JavaScript 中依日期屬性對物件陣列進行排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!