按日期排序对象数组[重复]

Posted

技术标签:

【中文标题】按日期排序对象数组[重复]【英文标题】:Order array of objects by date [duplicate] 【发布时间】:2017-05-21 06:21:56 【问题描述】:

例如

myArr= [
    name:"Joe",  id:3,  date: "2012.10.12",
    name:"Ed",   id:43, date: "2012.02.12",
    name:"Mark", id:22, date: "2012.02.11"
];

那么我怎样才能按日期对这个数组进行排序呢?

这只是一个小例子,但它就像该数组中的 1000 个对象。 我在网上搜索了一些使用sort()函数但在我的大数组中不起作用的例子。

【问题讨论】:

那么,您使用的哪些代码无法对其进行排序?对大型数组进行排序可能会导致速度变慢。除非您展示导致缓慢的原因,否则我们无法帮助您。 正如 epascarello 所暗示的,如果你不展示你尝试过的东西,我们将不知道你哪里出错了,我们只能为你解决问题,这不是堆栈的意图溢出。 ***.com/help/how-to-ask 不是同一个问题!!!作为 【参考方案1】:

假设日期只是在您的代码中格式化的字符串,您可以这样做:

myArr.sort( (a,b) => a.date.localeCompare(b.date) )

sort 方法将一个函数作为参数,每次需要比较数组的两个元素时都会调用该函数。因此,要按特定字段排序,您需要传递一个函数来比较传入的两个对象的这些字段。

排序比较器函数必须返回一个表示正确顺序的特殊值:-1 如果第一个参数(通常称为a)应该在第二个参数之前(b); 1 如果b 应该在a 之前;如果它们相等,则为 0(因此顺序无关紧要)。幸运的是,已经有一个方法可以比较字符串并为sort 返回正确的值(如果您在a 上调用它并将b 作为参数传递):localeCompare。由于您要比较的字段是字符串,因此您只需在比较函数中的字段上调用它即可返回正确的排序值。

【讨论】:

天哪,你是我的救星!!非常感谢!!!

以上是关于按日期排序对象数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JQuery使用日期对对象数组进行排序[重复]

按日期排序数组中的对象

按日期对具有日期字段的对象数组进行排序

按日期对对象的嵌套数组进行排序

Javascript - 按日期然后按时间对对象数组进行排序

PHP - 按对象属性对对象数组进行排序[重复]