【问题标题】: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 所暗示的,如果你不展示你尝试过的东西,我们将不知道你哪里出错了,我们只能为你解决问题,这不是堆栈的意图溢出。 stackoverflow.com/help/how-to-ask
  • 不是同一个问题!!!作为

标签: javascript html


【解决方案1】:

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

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

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

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

【讨论】:

  • 天哪,你是我的救星!!非常感谢!!!
猜你喜欢
  • 2015-02-25
  • 2021-07-05
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
相关资源
最近更新 更多