Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การสร้างเวลาที่ใกล้ที่สุดจากเวลาปัจจุบันใน JavaScript

ปัญหา

เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง time ซึ่งแทนเวลาในรูปแบบ "HH:MM"

ฟังก์ชันควรสร้างเวลาที่ใกล้ที่สุดถัดไปโดยนำตัวเลขปัจจุบันมาใช้ซ้ำ ไม่มีข้อจำกัดว่าตัวเลขแต่ละตัวจะนำไปใช้ซ้ำได้กี่ครั้ง

ตัวอย่างเช่น หากอินพุตคือ

อินพุต

const time = '19:34';

เอาต์พุต

const output = '19:39';

คำอธิบายเอาต์พุต

เวลาที่ใกล้ที่สุดถัดไปที่เลือกจากตัวเลข 1, 9, 3, 4 คือ 19:39 ซึ่งเกิดขึ้น 5 นาทีหลังจากนี้ ไม่ใช่ 19:33 เพราะนั่นจะเกิดขึ้นอีก 23 ชั่วโมง 59 นาที

ตัวอย่างโค้ด

const time = '19:34';
const findClosestTime = (time = '') => {
const [a, b, c, d] = [time[0], time[1], time[3], time[4]].map(x => Number(x));
const sorted = [a, b, c, d].sort((x, y) => x - y);
const d2 = sorted.find(x => x > d);
if (d2 > d) return `${a}${b}:${c}${d2}`;
const c2 = sorted.find(x => x > c && x <= 5);
const min = Math.min(a, b, c, d);
if (c2 > c) return `${a}${b}:${c2}${min}`;
const b2 = sorted.find(x => x > b && a * 10 + x <= 24);
if (b2 > b) return `${a}${b2}:${min}${min}`;
const a2 = sorted.find(x => x > a && x <= 2);
if (a2 > a) return `${a2}${min}:${min}${min}`;
return `${min}${min}:${min}${min}`;
};
console.log(findClosestTime(time));

ผลลัพธ์

19:39