TIL_015_210208

James·2021년 2월 8일
0

TILs

목록 보기
15/40

Underbar Lib 만들기

자바스크립트 배열 내장 메소드들을 함수로 만들어 보면서 원리를 이해하는 시간을 갖았다.

지금까지 당연한 듯 사용 예시를 보면서 별 생각없이 이렇게 하면 의도대로 작동하는 구나 하면서 써왔는데, 시간을 들여서 배열 내장 메소드가 어떤 원리로 작동되는 구나라는 걸 고민할 수 있어서 좋았다.

forEach, filter, map, reduce 가 가장 많이 사용해온 메소드인데 특히 reduce 구현하는 것에 시간을 많이 썼다.

  
  let acc = initVal;
  _.each(arr, function(el, idx, arr){
    if(initVal === undefined && idx === 0) {
      acc = el;
    }
    else {
      result = iteratee(acc, el, idx, arr)
    }
  });
  return result;
};

reduce에서 까다로웠던 부분은 인자로 초기값을 넣지 않았을 때, 배열의 첫 번째 element가 acc로 들어가고, 두 번째 element부터 반복문이 실행된다는 것이다.
처음엔 초기값이 없을 때와 있을 때의 경우 각각에 each함수를 넣어서 구현해보려고 했지만 생각처럼 잘되지 않았고 acc=arr[0]으로 억지스럽게 할당하기 보다는 acc=el로 자연스럽게 할당하고 싶다는 생각을 하다가 페어와 상의 끝에 상기 코드를 이끌어 냈다.

내일은 조금 더 수월하게 underbar 함수 구현을 끝낼 수 있지 않을까..

! 코딩을 하다 보면 과거에 해오던 방식에 얽매여 가끔 자꾸 어둡고 복잡한 미로속으로 들어가는 느낌을 받는다. 이제는 그런 느낌을 받으면.. 아 뭔가 단추를 잘못 끼웠구나 하고 멈추고 다시 생각해보는 습관을 가져야 겠다.

profile
웹개발자 James 입니다.

0개의 댓글