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

时间:2011-08-04 06:40:05

标签: javascript jquery

如果我有一个包含属性的对象数组,并且我想按特定属性对对象进行排序,那么我怎么能这样做?例如,假设我有一堆news个对象,每个对象都有date属性。

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

3 个答案:

答案 0 :(得分:3)

如果您的阵列是arr:

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

答案 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()函数将负责其余部分。

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

答案 2 :(得分:0)

您可以为数组的排序方法提供sort function

// 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
  4. 按顺序排序:

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