使用日期类型对数组进行排序

时间:2017-05-15 15:05:20

标签: javascript arrays sorting date

还是新手。尝试使用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 }

1 个答案:

答案 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; }




版本

  • firstRegistration,desc,
  • make,asc,
  • model,asc



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; }