亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在推送到數組時對項目進行排序

在推送到數組時對項目進行排序

開心每一天1111 2023-04-27 10:49:31
我想在將項目推送到數組時對日期和時間進行排序。到目前為止,我只能對日期進行排序,但無法對時間進行排序。如果同一日期有兩次,那么如何先對日期進行排序,然后再對該日期的時間進行排序。let items = [{'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'}, //both the 2020-05-12 date has two timings so I want to sort these time too along with the date{'id': 'id4', 'date': '2020-09-23', 'time': '07:16:23.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]))];最終排序的數組必須看起來像['id': 'id2', 'date': '2020-05-12', 'time': '02:09:57.000'], ['id': 'id3', 'date': '2020-05-12', 'time': '03:04:44.000'],['id': 'id7', 'date': '2020-08-17', 'time': '05:02:54.000'],['id': 'id4', 'date': '2020-09-23', 'time': '07:16:23.000']
查看完整描述

3 回答

?
幕布斯7119047

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;



    }


});




這首先比較日期。如果日期不同,則無需比較時間。如果日期相同,您可以比較時間。


查看完整回答
反對 回復 2023-04-27
?
12345678_0001

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)


查看完整回答
反對 回復 2023-04-27
?
慕桂英3389331

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)


查看完整回答
反對 回復 2023-04-27
  • 3 回答
  • 0 關注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號