如果我有一个包含属性的对象数组,并且我想按特定属性对对象进行排序,那么我怎么能这样做?例如,假设我有一堆news
个对象,每个对象都有date
属性。
我如何按日期对javascript中的每个对象进行排序?
答案 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);
}
);
}
如果日期字符串可以简单地转换为日期。如果没有,只需重新格式化,以便它们可以在数据或排序函数中。
原始订单:
按顺序排序: