Computer >> Máy Tính >  >> Lập trình >> Javascript

Tạo thời gian gần nhất bằng thời gian hiện tại trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng một chuỗi, thời gian, biểu thị thời gian ở dạng "HH:MM".

Hàm của chúng ta được cho là hình thành lần gần nhất tiếp theo bằng cách sử dụng lại các chữ số hiện tại. Không có giới hạn về số lần một chữ số có thể được sử dụng lại.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const time = '19:34';

Đầu ra

const output = '19:39';

Giải thích đầu ra

Thời gian gần nhất tiếp theo được chọn từ các chữ số 1, 9, 3, 4, là 19:39, xảy ra 5 phút sau đó. Đó không phải là 19:33, vì điều này xảy ra sau 23 giờ 59 phút.

Ví dụ

Sau đây là mã -

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));

Đầu ra

19:39