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

Javascript 如何使用对象属性对对象数组进行排序,javascript,jquery,Javascript,Jquery,如果我有一个具有属性的对象数组,并且我想按特定属性对对象进行排序,我将如何做到这一点?例如,假设我有一堆news对象,每个对象都有date属性 如何按日期对javascript中的每个对象进行排序?如果数组是arr: arr.sort(function(a,b) { return ( a.date < b.date ? -1 : (a.date > b.date ? 1 : 0 ) ); }); arr.sort(函数(a,b){ 返回(a.dateb.date-1:0)

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

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

如果数组是arr:

arr.sort(function(a,b) { 
    return ( a.date < b.date ? -1 : (a.date > b.date ? 1 : 0 ) );
});
arr.sort(函数(a,b){
返回(a.dateb.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;
});
someArray.sort(函数(a,b){
如果(a.日期b.日期)
返回1;
返回0;
});
您的函数只需要能够比较任意两个给定的对象,并根据它们相等时哪个先到或哪个为零返回负值或正值。
.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);
    }
  );
}
前提是日期字符串可以转换为简单的日期。如果没有,只需重新格式化,以便它们可以在数据或排序函数中使用

原订单:

  • 2010/8/12
  • 2012/8/10
  • 2011/8/19
  • 排序顺序:

  • 2010/8/12
  • 2011/8/19
  • 2012/8/10

  • 对不起,你是说
    日期
    而不是
    数据
    ?这些外括号真的需要吗?这已经被问了很多很多次了。哎呀,可能应该多注意顶部的横幅,它告诉我另一个答案已经发布了。哦,好吧,我将大胆地把我的答案也留给大家,因为我在代码中给出了一个简短的解释。