언어별 학습 자료/Javascript

"# JavaScript 30" 강의 - 18. Adding Up Times with Reduce

CarpediemMementomori 2020. 10. 22. 16:18

학습일자

2020.10.22

 

학습내용

전체 시간을 합하여, 시, 분, 초로 표시하기

 

 

알게된 점

- 항상 연산을 하려고 하는 경우 반환 값의 type이 string이 아니고 number인지 확인하기/ 만일 아니라면 parseFloat으로 문자 -> 숫자로 변형 후 연산해야함

<script>
			const timeNodes = Array.from(document.querySelectorAll("[data-time]"));

			const seconds = timeNodes
				.map((node) => node.dataset.time)
				.map((timeCode) => {
					//split 까지만 하면 숫자가 아닌 문자로 반환하므로 연산할 수가 없음.
					//따라서, parseFloat 함수를 통해 문자 -> 숫자로 변형해줘야 함
					const [mins, secs] = timeCode.split(":").map(parseFloat);
					return mins * 60 + secs;
				})
				.reduce((total, vidSeconds) => total + vidSeconds);

			let secondsLeft = seconds;
			const hours = Math.floor(secondsLeft / 3600);
			secondsLeft = secondsLeft % 3600;

			const mins = Math.floor(secondsLeft / 60);
			secondsLeft = secondsLeft % 60;

			console.log(hours, mins, secondsLeft);
		</script>