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

Tìm chênh lệch thời gian tối thiểu trong một mảng trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript sử dụng mảng thời gian 24 giờ theo định dạng "Giờ:Phút". Hàm của chúng ta sẽ tìm chênh lệch số phút tối thiểu với hai điểm thời gian trong mảng.

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

const arr = ["23:59","00:00"];

Sau đó, đầu ra phải là -

const output = 1;

Vì chênh lệch tối thiểu giữa các thời điểm là 1 phút

Ví dụ

Sau đây là mã -

const arr = ["23:59","00:00"];
const findMinDifference = (arr = []) => {
   const find = (str = '') => str.split(':').map(time => parseInt(time, 10))
   const mapped = arr.map((time) => {
      const [hour1, minute1] = find(time)
      return hour1 * 60 + minute1
   });
   const sorted = []
   let isrepeating = false
   mapped.forEach((time) => {
      if (sorted[time] !== undefined || sorted[time + 24 * 60] !== undefined) {
      isrepeating = true
   }
      sorted[time] = time
      sorted[time + 24 * 60] = time + 24 * 60
   })
   if (isrepeating) {
      return 0
   }
   let min = Infinity
   let prev = null
   for (let i = 0; i < sorted.length; i++) {
      if (sorted[i] !== undefined) {
         if (prev) {
            min = Math.min(min, sorted[i] - prev)
         }
         prev = sorted[i]
      }
   }
   return min
};
console.log(findMinDifference(arr));

Đầu ra

Sau đây là đầu ra của bảng điều khiển -

1