我正在開發一個日歷插件,它可以顯示我的職業概覽,順序如下:

現在我用moment.js在日歷上得到了事件,所以它們的格式是這樣的(按開始日期排序):
let events = [{
name: 'Event A',
start: '01-11-2021 00:00',
end: '08-11-2021 00:00',
},{
name: 'Event C',
start: '03-11-2021 00:00',
end: '06-11-2021 00:00',
},{
name: 'Event E',
start: '05-11-2021 00:00',
end: '08-11-2021 00:00',
},{
name: 'Event D',
start: '07-11-2021 00:00',
end: '12-11-2021 00:00',
},{
name: 'Event B',
start: '10-11-2021 00:00',
end: '17-11-2021 00:00',
},]
預期的occupationOverview 陣列類似于:
let ooArray = [
{ // Longest/bottom bar
start: '01-11-2021 00:00',
end: '17-11-2021 00:00',
group: 1
},
{ // Middle bar 1
start: '03-11-2021 00:00',
end: '08-11-2021 00:00',
group: 2
},
{ // Middle bar 2
start: '10-11-2021 00:00',
end: '12-11-2021 00:00',
group: 2
},
{ // Top bar 1
start: '05-11-2021 00:00',
end: '06-11-2021 00:00',
group: 3
},
{ // Top bar 2
start: '07-11-2021 00:00',
end: '08-11-2021 00:00',
group: 3
},]
老實說,我不知道如何對日歷事件進行分組,因此它們回傳一個包含開始時間和結束時間的陣列,導致紅色框。
任何人都可以幫我解決這個問題?謝謝!
uj5u.com熱心網友回復:
看起來你需要以diff毫秒為單位,并從最大到最小排序。您必須使用它來查看它的排序方式(可能需要翻轉diff陳述句中的“a”和“b” ,因為我沒有針對您的陣列運行它)
const sortedArray = array.sort((a, b) => a.diff(b))
uj5u.com熱心網友回復:
似乎開始日期應該從最新到最舊排序,然后與從最早到最晚排序的結束日期匹配。這可以通過提取開始和結束,根據需要排序,然后組合以獲得新的開始和結束陣列來完成。例如
// Parse date in D-M-Y H:m format
function parseDMY(s) {
let [D, M, Y, H, m] = s.split(/\D/);
return new Date(Y, M - 1, D, H, m);
}
let events = [{
name: 'Event A',
start: '21-01-2021 00:00',
end: '24-01-2021 00:00',
}, {
name: 'Event C',
start: '21-01-2021 12:00',
end: '24-01-2021 12:00',
}, {
name: 'Event B',
start: '22-01-2021 06:00',
end: '25-01-2021 12:00',
}];
// Get starts and ends, sort newest to oldest
let starts = events.map(evt => evt.start).sort((a, b)=> parseDMY(a) - parseDMY(b));
let ends = events.map(evt => evt.end).sort((a, b)=> parseDMY(a) - parseDMY(b));
// reverse ends
ends.reverse();
// Combine starts and ends
let result = [];
for (let i = 0, len = starts.length; i < len; i ) {
result.push({start: starts[i], end: ends[i]});
}
console.log(result);
如果日期是 YYYY-MM-DD HH:mm 格式,那么它們可以作為字串排序而不轉換為日期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/337184.html
標籤:javascript 排序 日期 瞬间
