新增時間段,但是不能與原來陣列中的時間段有重疊

好久不见-库克發表於2024-11-19

如果使用者新增的時間段,在上面顯示時間段有重複的時間範圍,則提示如下內容:

執行函式的入參內容列印:

點選檢視實現程式碼
export function addTimeRange(timeRanges, newTimeRange) {
  console.log('原有的時間範圍的陣列timeRanges',timeRanges)
  console.log('新的時間範圍newTimeRange',newTimeRange)
  let timeRanges1 = cloneDeep(timeRanges);
  timeRanges1.sort((a, b) => a.min - b.min);
  timeRanges1.forEach((item) => {
    if (newTimeRange.min == item.min && newTimeRange.max == item.max) {
      item.flag = false;
    }
     if (
      (newTimeRange.min == item.min && newTimeRange.max >item.min) ||
      (newTimeRange.min<item.max && newTimeRange.max== item.max) ||
      (newTimeRange.min < item.min&&newTimeRange.min==item.max && newTimeRange.max==item.min)||
      (newTimeRange.min < item.min && newTimeRange.min < item.max&&newTimeRange.max>item.min) ||
      (newTimeRange.min > item.min && newTimeRange.min < item.max)
    ) {
      item.flag = false;
    }
  });
  let isExist = timeRanges1.some((item1) => item1.flag == false);
  if (!isExist) {
    timeRanges.push(newTimeRange);
  }else{
    ElMessage({ type: "error", message: "存在重複的時間段,請重新選擇" });
  }
  return timeRanges;
}

相關文章