對于我目前正在從事的專案,我有一個具有 ISO 格式的物件startTime和屬性的串列。endTime這是一個示例:
list = [
{
startTime: '2022-06-26T10:00:00.000Z',
endTime: '2022-06-26T10:30:00.000Z'
},
{
startTime: '2022-06-26T10:35:00.000Z',
endTime: '2022-06-26T11:00:00.000Z'
},
{
startTime: '2022-06-26T11:45:00.000Z',
endTime: '2022-06-26T12:15:00.000Z'
},
{
startTime: '2022-06-26T12:10:00.000Z',
endTime: '2022-06-26T12:25:00.000Z'
},
{
startTime: '2022-06-26T12:20:00.000Z',
endTime: '2022-06-26T12:45:00.000Z'
},
{
startTime: '2022-06-26T12:40:00.000Z',
endTime: '2022-06-26T13:00:00.000Z'
}
]
我有一個物件assignment,它有兩個屬性,就像list上面陣列的物件一樣。
const assignment = {
startTime: '2022-06-26T12:00:00.000Z',
endTime: '2022-06-26T12:30:00.000Z'
}
我的任務是從list陣列中過濾不屬于間隔/重疊的物件assignment。例如,我想在我的result陣列中包含以下內容,因為它們不重疊/不在 的區間內assignment:
const result = [
{
startTime: '2022-06-26T10:00:00.000Z',
endTime: '2022-06-26T10:30:00.000Z'
},
{
startTime: '2022-06-26T10:35:00.000Z',
endTime: '2022-06-26T11:00:00.000Z'
},
{
startTime: '2022-06-26T12:40:00.000Z',
endTime: '2022-06-26T13:00:00.000Z'
}
]
但我想從我的result陣列中排除以下內容,因為它們重疊/在assignment物件的間隔內。
[
{
startTime: '2022-06-26T11:45:00.000Z',
endTime: '2022-06-26T12:15:00.000Z'
},
{
startTime: '2022-06-26T12:10:00.000Z',
endTime: '2022-06-26T12:25:00.000Z'
},
{
startTime: '2022-06-26T12:20:00.000Z',
endTime: '2022-06-26T12:45:00.000Z'
},
]
到目前為止,這是我的想法:所以,基本上有 5 個場景。
Scenario 1: startTime and endTime of a list object are before the startTime of assignment
Scenario 2: startTime of a list object is before the startTime of the assignment but endTime is after startTime and before endTime of the assignment
Scenario 3: startTime and endTime of a list object falls entirely into the interval of the startTime and endTime of the assignment object
Scenario 4: startTime of a list object is after the startTime and before the endTime of assignment but endTime(list object) is after the endTime of the assignment
Scenario 5: Both startTime and endTime of the list object are after the endTime of the assignment
除了寫很多if-else條件之外,過濾物件串列的最佳方法是什么?我正在使用帶有 luxon 庫的 Javascript。任何幫助將不勝感激。
uj5u.com熱心網友回復:
您可以通過檢查endTimein 在 in之前list或in在 in之后來檢查間隔不重疊:startTimeassignmentstartTimelistendTimeassignment
list = [
{ startTime: '2022-06-26T10:00:00.000Z', endTime: '2022-06-26T10:30:00.000Z' },
{ startTime: '2022-06-26T10:35:00.000Z', endTime: '2022-06-26T11:00:00.000Z' },
{ startTime: '2022-06-26T11:45:00.000Z', endTime: '2022-06-26T12:15:00.000Z' },
{ startTime: '2022-06-26T12:10:00.000Z', endTime: '2022-06-26T12:25:00.000Z' },
{ startTime: '2022-06-26T12:20:00.000Z', endTime: '2022-06-26T12:45:00.000Z' },
{ startTime: '2022-06-26T12:40:00.000Z', endTime: '2022-06-26T13:00:00.000Z' }
]
const assignment = { startTime: '2022-06-26T12:00:00.000Z', endTime: '2022-06-26T12:30:00.000Z' }
const aDates = {
startTime: new Date(assignment.startTime),
endTime: new Date(assignment.endTime)
}
const result = list.filter(({ startTime, endTime }) =>
new Date(startTime) > aDates.endTime ||
new Date(endTime) < aDates.startTime
)
console.log(result)
.as-console-wrapper { max-height:100% !important; top: 0 }
請注意,我已將日期轉換assignment為Date回圈外,以保存多次發生的轉換。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496313.html
標籤:javascript 节点.js 约会时间 卢克森
上一篇:從SQL中的時間戳獲取周數
