按日期属性对对象数组进行排序
要按日期属性对对象数组进行排序,可以使用 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中文网其他相关文章!