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)
添加回答
舉報