3 回答
TA贡献1794条经验 获得超8个赞
你可以尝试这样的事情:
function compare (a,b) {
if(a<b) return -1;
else if(a>b) return 1;
else return 0;
}
items.sort((a,b) => {
let d = compare(a.date, b.date);
if(d < 0) return -1;
else if(d > 0) return 1;
else {
//Same date compare time
let t = compare(a.time, b.time);
if(t < 0) return -1;
else if(t > 0) return 1;
else return 0;
}
});
这首先比较日期。如果日期不同,则无需比较时间。如果日期相同,您可以比较时间。
TA贡献1802条经验 获得超5个赞
let sortedData = [headers, ...dataArr.sort((a, b) => a[1].localeCompare(b[1])==0 ? a[2].localeCompare(b[2]) : a[1].localeCompare(b[1]))];
let items = [
{'id': 'id7', 'date': '2020-08-17', 'time': '05:02:54.000'},
{'id': 'id3', 'date': '2020-05-12', 'time': '03:04:44.000'},
{'id': 'id4', 'date': '2020-09-23', 'time': '07:16:23.000'},
{'id': 'id2', 'date': '2020-05-12', 'time': '02:09:57.000'}
];
const headers = [
'ID',
'Date',
'Time'
];
dataArr = []
items.forEach(item => {
dataArr.push([
item.id,
item.date,
item.time
]);
})
;
let sortedData = [headers, ...dataArr.sort((a, b) => a[1].localeCompare(b[1])==0 ? a[2].localeCompare(b[2]) : a[1].localeCompare(b[1]))];
console.log(sortedData)
TA贡献2036条经验 获得超8个赞
尝试在单个排序函数中对日期和时间进行排序
let ss = [
{'id': 'id7', 'date': '2020-08-17', 'time': '05:02:54.000'},
{'id': 'id2', 'date': '2020-05-12', 'time': '02:09:57.000'},
{'id': 'id3', 'date': '2020-05-12', 'time': '03:04:44.000'},
{'id': 'id4', 'date': '2020-09-23', 'time': '07:16:23.000'}
];
let dd = ss.sort((a,b)=>new Date(a.date+':'+a.time) - new Date(b.date+':'+b.time))
console.log(dd)
添加回答
举报