Ողջույն ժողովուրդ🙌
Այսօր ես ավարտեցի 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 օրվա համար ✅
Շնորհակալություն կարդալու համար,Կհանդիպենք վաղը: