我有一个JavaScript对象数组:
var objs = [
{ key: 10, date: Thu Nov 09 2017 22:30:08 GMT+0530 },
{ key: 10, date: Thu Oct 10 2017 22:30:08 GMT+0530 },
{ key: 20, date: Thu Dec 09 2017 22:30:08 GMT+0530 }
];
并尝试获得这样的结果
var objs = [
{ key: 20, date: Thu Dec 09 2017 22:30:08 GMT+0530 },
{ key: 10, date: Thu Oct 10 2017 22:30:08 GMT+0530 },
{ key: 10, date: Thu Nov 09 2017 22:30:08 GMT+0530 }
];
数组应根据键和日期排序,键应按降序排序,日期应根据升序排序,当且仅当键相同时。
我怎么能做到这一点?
这里的日期是Date对象,因此需要以毫秒为单位考虑日期而不是字符串
答案 0 :(得分:2)
要按降序对数字进行排序,您可以使用比较函数,例如:
function (a, b) { return b - a; }
如果您想进行备份比较,请使用||
,以便在第一次比较产生0
时,您可以使用备份比较。要按升序比较日期,请使用a - b
。
objs.sort(function (a, b) {
return b.key - a.key || a.date - b.date;
});