在 JavaScript 中查詢陣列中時間差的最小值


問題

我們需要編寫一個 JavaScript 函式,它採用包含 24 小時制時間點的陣列,格式為“小時:分鐘”。我們的函式應當找出陣列中任意兩個時間點之間的最小分鐘差。

例如,如果函式的輸入如下 −

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

則輸出應當如下 −

const output = 1;

因為時間之間的最小差為 1 分鐘

示例

程式碼如下 −

 線上演示

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

輸出

控制檯輸出如下 −

1

更新於: 21-4 月-2021

326 次瀏覽

開啟你的職業生涯

透過完成該課程獲得認證

開始吧
廣告