본문 바로가기
코드스테이츠

1/17 일일정리(1) Underbar

by 강물둘기 2023. 1. 17.

 

Underbar 과제

페어와 함께 과제 Underbar에서 Javascript의 기본 내장 고차함수를 라이브러리를 만드는 것 처럼 구현해봤다.

 

 처음에는 그냥저냥 무난했는데 첫번째 고비는 forEach 메서드를 구현하는 것이었다. 일단 함수 로직을 이해하는 것이 1차 문제였고, 2차 문제로 return문을 사용하지 않는 함수는 익숙하지 않다는 것이었다.

결론적으로 forEach 함수는 따로 새로운 배열을 반환하는 것이 아니라 기존 배열을 가지고 요소를 돌면서 콜백함수를 그냥 실행만 하는 함수였다.

forEach 메서드 구현

 

시간은 오래 걸렸는데 다 작성하고 나니 10줄남짓밖에 안됐다. 뭔가 코드를 다 작성하고 보니 별거 아니다(?) 라는 느낌이 들었다. 

 

map 메서드가 forEach 메서드와 비슷하다고 느꼈었는데 이번에 확실이 차이를 알게 되었다. forEach 메서드는 콜백 함수를 그냥 실행만하고, map 메서드는 콜백 함수를 각각 요소에 전부 적용해서 새로 만들어진 배열을 리턴한다.

map 메서드 구현

 

그리고 마지막문제인 reduce 함수는 역시 어려웠다. 

reduce 메서드 구현

초기값이 있으면 acc의 첫 값으로 초기값을 넣고 그냥 forEach 함수만 사용하면 되서 괜찮았다.

그런데 초기값이 없는 경우 arr의 첫번째 요소를 acc의 첫 값으로 넣고 두번째 요소부터 forEach를 돌려야 했는데 이걸 구현하는데 오래걸렸다. 고민해서 나온것이 arr의 복사본의 첫 요소를 삭제하고 forEach 함수를 사용하는 것이었다. 

 

구현하는 것은 성공하기는 했는데 뭔가 코드가 복잡한 느낌이어서 reference 코드를 살펴봤다.

reduce 메서드 구현 reference 코드

reference 코드에서는 forEach 함수 안에 조건문으로 초기값이 없으면 첫번째 요소를 넣어주는 분기를 했다. 확실히 이방법이 훨씬 깔끔한 코드로 작성된 것 같다. 

 

advanced 과제부터는 시간이 부족해서 다 하지 못했는데 주말에 직접 구현해봐야겠다.

댓글