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);
}
);
}
前提是日期字符串可以转换为简单的日期。如果没有,只需重新格式化,以便它们可以在数据或排序函数中使用
原订单:
对不起,你是说
日期
而不是数据
?这些外括号真的需要吗?这已经被问了很多很多次了。哎呀,可能应该多注意顶部的横幅,它告诉我另一个答案已经发布了。哦,好吧,我将大胆地把我的答案也留给大家,因为我在代码中给出了一个简短的解释。