按日期排序对象数组[重复]
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
。由于您要比较的字段是字符串,因此您只需在比较函数中的字段上调用它即可返回正确的排序值。
【讨论】:
天哪,你是我的救星!!非常感谢!!!以上是关于按日期排序对象数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章