还是新手。尝试使用Date类型对对象数组进行排序时遇到问题。例如:我有3辆汽车:(名称,首次登记日期(类型日期))。我该如何排序这个数组?我应该将日期更改为字符串吗?谢谢。
function car(Make, Model, Date) {
return Make + Model + Date;
}
var date1 = '2010';
var date2 = '2003';
var date3 = '2015';
var d1 = new Date(date1);
var d2 = new Date(date2);
var d3 = new Date(date3);
var n1 = d1.getFullYear();
var n2 = d2.getFullYear();
var n3 = d3.getFullYear();
var x = car('Mercedes', ' c220 ', n1);
var y = car(' Toyota', ' Prius ', n2);
var z = car(' Audi', ' a3 ', n3);
var polje = [x, y, z];
console.log(polje);
.as-console-wrapper { top: 0 }
答案 0 :(得分:2)
您可以使用Date#toISOString
作为String#localeCompare
的可排序字符串。
然后你可以用它来排序
var array = [
{ make: 'Mercedes', model: 'c220', date : new Date('2010') },
{ make: 'Toyota', model: 'Prius', date : new Date('2003') },
{ make: 'Audi', model: 'a3', date : new Date('2015') }
];
array.sort(function (a, b) {
return a.date.toISOString().localeCompare(b.date.toISOString());
});
console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }

版本
var array = [
{ make: 'Mercedes', model: 'c220', firstRegistration: 2010 },
{ make: 'Toyota', model: 'Prius', firstRegistration: 2015 },
{ make: 'Audi', model: 'a3', firstRegistration: 2015 }
];
array.sort(function (a, b) {
return b.firstRegistration - a.firstRegistration ||
a.make.localeCompare(b.make) ||
a.model.localeCompare(b.model);
});
console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }