前言
本文為「JavaScript 30」教學影片的學習筆記。
目標
加總播放清單的總秒數,並換算成小時、分鐘與秒數。
筆記
取得所有擁有 data-time 屬性的元素,並將其從 NodeList 型態轉為 Array 型態。
1
   | const timeNotes = Array.from(document.querySelectorAll('[data-time]'));
  | 
 
使用 map() 和 reduce() 函式取得總秒數。
1 2 3 4 5 6 7
   | const seconds = timeNotes     .map(node => node.dataset.time)      .map(timecode => {         const [mins, secs] = timecode.split(':').map(parseFloat);          return (mins * 60) + secs;      })     .reduce((total, vidSeconds) => total + vidSeconds); 
   | 
 
將累加總秒數換算成小時、分鐘與秒數。
1 2 3 4 5 6 7 8 9 10 11 12
   | let secondsLeft = seconds;
  const hours = Math.floor(secondsLeft / 3600);
  secondsLeft %= 3600;
 
  const mins = Math.floor(secondsLeft / 60);
  secondsLeft %= 60;
  console.log(hours, mins, secondsLeft);
   |