如何使用对象属性对对象数组进行排序

如果我有一个具有属性的对象数组,并且我想按特定属性对对象进行排序,那么我将如何做到这一点? 例如,假设我有一堆news对象,每个对象都有一个date属性。

我如何能够按日期对javascript中的每个对象进行排序?

如果你的数组是arr:

 arr.sort(function(a,b) { return ( a.date < b.date ? -1 : (a.date > b.date ? 1 : 0 ) ); }); 

你需要将自己的函数传递给.sort() ,如下所示:

 someArray.sort(function(a, b) { if (a.date < b.date) return -1; else if (a.date > b.date) return 1; return 0; }); 

你的函数只需要能够比较任何两个给定的对象并返回负数或正数,具体取决于哪个是第一个,如果它们相等则返回零。 .sort()函数将处理其余部分。

这意味着您可以对您喜欢的对象的任何属性进行排序,甚至(可选)为第一个属性相等的情况引入辅助排序。 您也可以通过否定返回值来控制升序与降序。

您可以为Array的sort方法提供sort函数 :

 // Sample data var newsArray = [ {date: '2010/8/12'}, {date: '2012/8/10'}, {date: '2011/8/19'} ]; // Sorting function function sortNewsArray(arr) { return arr.sort(function(a, b) { return new Date(a.date) - new Date(b.date); } ); } 

如果日期字符串可以简单地转换为日期。 如果没有,只需重新格式化,以便它们可以在数据或排序函数中。

原始订单:

  1. 2010年8月12日
  2. 2012年8月10日
  3. 2011/8/19

排序顺序:

  1. 2010年8月12日
  2. 2011/8/19
  3. 2012年8月10日