Day 18 - Adding Up Times with Reduce
이번 과제는 map, reduce에 대한 방법만 알고 있다면 간단하게 해결할 수 있다.
Full Script
1 | const timeNodes = [...document.querySelectorAll("[data-time]")]; |
querySelectorAll
로 가져온 데이터는 Node List의 형태이므로 spread 문법을 이용하여 풀어서 배열화시켜 저장한다. Array.from()
을 사용해도 상관없다.
우선 시간에 대한 데이터는 각각 <li data-time="4:04">Video 58</li>
형식의 태그 안에 dataset으로 들어있는데, 이를 map
으로 시간을 추출하기 위해 먼저 매핑한다.
그 후 시간의 형식이 mm:ss
형식이므로 :
를 기준으로 split()
을 사용하여 나눈 후 parseFloat
을 이용하여 실수형 형변환을 시킨다.
그 값을 reduce
를 사용하여 더해주면 되는데, 첫번째 인자인 total
은 총 누적 값이고, 두번째 인자인 eachSeconds
는 누적 값이다.
두번의 매핑 후 한번의 리듀스를 거치면 결국 초 단위로 바꾼 총 누적 값이 되고, 이 값을 시간, 분, 초로 잘라서 콘솔에 출력하면 된다.