首页 > web前端 > js教程 > 如何在 JavaScript 中按日期降序对对象数组进行排序?

如何在 JavaScript 中按日期降序对对象数组进行排序?

Susan Sarandon
发布: 2024-12-27 16:04:10
原创
800 人浏览过

How Can I Sort an Array of Objects by Date in Descending Order in JavaScript?

按日期属性对对象数组进行排序

问题:您有一个具有日期属性的对象数组,并且想要根据最接近的日期按降序排序

解决方案:

使用自定义比较器:

一种方法是使用内置 sort( ) 方法以及自定义比较器函数。比较器函数将两个对象 a 和 b 作为参数,如果 a 应该在 b 之前、b 之后,或者它们应该保持在相同位置,则分别返回负值、正值或零值。

为了按日期排序,比较器函数会将日期字符串转换为 JavaScript 日期并减去它们:

array.sort(function(a, b) {
  return new Date(b.date) - new Date(a.date);
});
登录后复制

通用解决方案:

更通用的解决方案是定义一个自定义 sortBy() 函数,对数组执行 Schwartzian 变换。此函数可用于按任何属性排序,而不仅仅是日期。

(function() {
  if (!Array.prototype.sortBy) Array.prototype.sortBy = sb;

  function sb(f) {
    // ... implementation
  }
})();
登录后复制

使用此自定义函数,您可以按日期属性排序,如下所示:

array.sortBy(function(o) { return o.date });
登录后复制

处理复杂的日期比较:

如果您的日期属性无法直接比较,您可以从它,例如 JavaScript Date 对象:

array.sortBy(function(o) { return new Date(o.date) });
登录后复制

按多个条件排序:

您还可以使用 sortBy() 函数按多个条件排序。只需从比较器函数返回一个值数组:

// Sort by date, then score (reversed), then name
array.sortBy(function(o) { return [o.date, -o.score, o.name] });
登录后复制

以上是如何在 JavaScript 中按日期降序对对象数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板