เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของช่วงเวลา (เวลาเริ่มต้นและสิ้นสุดเช่นนี้ -
const arr = [ { start: '01:00', end: '04:00' }, { start: '05:00', end: '08:00' }, { start: '07:00', end: '11:00' }, { start: '09:30', end: '18:00' }, ];
ฟังก์ชันของเราควรวนซ้ำผ่านอาร์เรย์ของอ็อบเจ็กต์นี้ และตรวจสอบองค์ประกอบทั้งหมดของอาร์เรย์เทียบกับออบเจ็กต์อื่นๆ
หากพบช่วงเวลาคาบเกี่ยวกัน การวนซ้ำจะหยุดและคืนค่า true หรือคืนค่า มิฉะนั้นเป็นเท็จ โดยช่วงที่ทับซ้อนกัน เราหมายถึงช่วงเวลาที่มีเวลาเหมือนกัน
ตัวอย่าง
const arr = [ { start: '01:00', end: '04:00' }, { start: '05:00', end: '08:00' }, { start: '07:00', end: '11:00' }, { start: '09:30', end: '18:00' }, ]; const overlapping = (a, b) => { const getMinutes = s => { const p = s.split(':').map(Number); return p[0] * 60 + p[1]; }; return getMinutes(a.end) > getMinutes(b.start) && getMinutes(b.end) > getMinutes(a.start); }; const isOverlapping = (arr) => { let i, j; for (i = 0; i < arr.length - 1; i++) { for (j = i + 1; j < arr.length; j++) { if (overlapping(arr[i], arr[j])) { return true; } }; }; return false; }; console.log(isOverlapping(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
true