繁体   English   中英

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

[英]How to sort an array of objects using their object properties

如果我有一个带有属性的对象数组,并且想按特定的属性对对象进行排序,那我该怎么做呢? 例如,假设我有一堆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日

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM