Ողջույն ժողովուրդ🙌

Այսօր ես ավարտեցի JavaScript30-ի 18-րդ տեսանյութը:

Նախագիծ 18. Tally String Times with Reduce

Աղբյուր՝ https://javascript30.com

Մենք կօգտագործենք «reduce() մեթոդը՝ տողերի ժամանակների զանգվածը հաշվարկելու համար: Դասը սկսելուց առաջ ես որոշ ժամանակ անցկացրեցի կարդալով MDN փաստաթղթերը (վերևի հղումը) այս մեթոդի մասին: Կարևոր է գնալ՝ հասկանալու զանգվածային մեթոդները, որոնք հասանելի են մեզ:

Այսօրվա մեր խնդիրն է կրկնել տեսանյութերի ցանկը և ամփոփել հայտնաբերված բոլոր ժամանակային դրոշմները:

Մեր տեսանյութերից յուրաքանչյուրն ունի data-time հատկանիշ, որը պարունակում է իրենց mm:ss ժամանակի լարային արժեքը: Այսպիսով, առաջին հերթին մենք պետք է ընտրենք բոլոր տեսանյութերը և հավաքենք դրանց համապատասխան data-time հատկանիշի արժեքը: Մենք նաև պետք է սա տարածենք զանգվածի մեջ (nodeList-ի փոխարեն).

const timeNodes = [...document.querySelectorAll('[data-time]')]

Հաջորդը, մենք պետք է վերցնենք ստացված տողերի զանգվածը և հաշվարկենք վայրկյանների ընդհանուր թիվը:

Դա անելու համար մենք պետք է տողերը բաժանենք րոպեների և վայրկյանների: Այնուհետև մենք պետք է դրանք վերածենք թվերի (երթևեկության ընթացքում րոպեները բազմապատկելով 60-ով): Այնուհետև մենք պետք է գումարենք ստացված բոլոր թվերը.

const seconds = timeNodes  
  .map(node => node.dataset.time)
  .map(timeCode => {
    const [mins, secs] = timeCode.split(':').map(parseFloat)
    return (mins * 60) + secs
  })
  .reduce((total, vidSeconds) => total +  vidSeconds)

Այժմ մենք պետք է փոխարկենք այս վայրկյանների քանակը մարդու կողմից ընթեռնելի HH:MM:SS ձևաչափի: Այս հաշվարկներում մենք կօգտագործենք Remainder (%) թվաբանական օպերատորը:

let secondsLeft = seconds  
const hours = Math.floor(secondsLeft / 3600)  
secondsLeft = secondsLeft % 3600  
const minutes = Math.floor(secondsLeft / 60)  
secondsLeft = secondsLeft % 60
console.log('Total Video Time: ' + hours + ':' + minutes + ':' + secondsLeft)

Այսօր ես սովորեցի (T-I-L).

Ամեն ինչ 18 օրվա համար ✅

Շնորհակալություն կարդալու համար,Կհանդիպենք վաղը: