Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Vấn đề

Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi time biểu diễn thời gian dạng "HH:MM". Hàm phải tạo thời gian tiếp theo gần nhất bằng cách tái sử dụng các chữ số hiện tại. Không giới hạn số lần tái sử dụng chữ số.

Ví dụ, nếu đầu vào là:

Đầu vào

const time = '19:34';

Đầu ra

const output = '19:39';

Giải thích

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

Ví dụ

Dưới đây là mã thực hiện:

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

Kết quả

19:39