[英]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);
}
);
}
提供的日期字符串可以转换为简单的日期。 如果不是,只需重新格式化,以便它们可以在数据或排序功能中使用。
原始订单:
排序顺序:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.