누코(nuuco)
오늘도 코딩
누코(nuuco)
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • 에러 노트
    • 자료구조 & 알고리즘
    • 프로그래밍
    • 프로젝트
    • 한컷코딩
    • 글

공지사항

  • 🚚 (전)노션 ➡️ (현)티스토리로 블로그 이사 오는 중(⋯

최근 글

인기 글

최근 댓글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
누코(nuuco)

오늘도 코딩

TIL

[TIL] #20. 고차함수 직접 구현해보기

2022. 12. 6. 03:04

2022.5.27. (금)

1. 오늘의 소감

  • 오늘은 배열의 고차함수들을 직접 구현해보는 과제를 진행했다. 콜백함수 생각하며 코드를 짜다보니 머리가 아프긴 했는데, 솔직히 조금 어려운만큼 정말 재밌었다. 나에게 딱 맞는 난이도랄까? 물론 어드밴스드 단계의 마지막 문제(_.sortBy) 와 나이트메어 단게는 손도 못댔지만….;;
  • underscore.js 라이브러리 레퍼런스 참고하기!
  • 실시간 세션에서 크루님이 BareMinimum 코드를 보여주셨는데, 내가 짠 것보다 훨씬 깔끔해서 놀랐다. 특히 _.reduce 함수 부분은 내가 생각지도 못한 로직으로 푸셔서 많은 공부가 되었다. 자세한 내용은 아래에!
  • 내가 처음 짠 리듀스 코드…
_.reduce = function(arr, iteratee, initVal) {
    let acc;
    let cur;
    let startIdx;

    if(initVal === undefined){
        acc = arr[0];
        cur = arr[1] !== undefined ? arr[1] : undefined;
        startIdx = 1;
    } else {
        acc = initVal;
        cur = arr[0];
        starIdx = 0;
    }

    _.each(arr, function(ele, idx){
        if(idx >= startIdx){
            acc = iteratee(acc, ele, idx, arr);
        }
    }
}
  • 크루님이 짜신 코드…
_.reduce = function(arr, iteratee, initVal) {
    let acc = initVal;

    _.each(arr, function(ele, idx, arr){
        if(acc === undefined){
            acc = arr[0];    
            //acc = arr[0], ele = arr[0]
            //초기값이 없을 때, 첫번째 요소에서 iteratee 실행은 건너 뜀
        } else {   //acc = arr[0], ele = arr[1];
            acc = iteratee(acc, ele, idx, arr);
        }
    })

    return acc;
}

⇒ reduce 는 초기값이 없을 때 acc = arr[0], cur = arr[1] 이 세팅된다. 이걸 나는 정말 의미 그대로 풀어서 밖에 구현할 수 없었다. 그런데 크루님은 이걸 “그럼 첫번째 반복에서는 acc 에 arr[0] 만 넣어주고, iteratee 실행을 안하면, 두번째 반복에서는 자연스럽게 acc = arr[0], cur = arr[1] 이 세팅되겠구나!” 로 풀으신 게 놀라웠다!! 멋지다. 이런 추론력…

728x90
반응형

'TIL' 카테고리의 다른 글

[TIL] #22. 재귀  (0) 2022.12.06
[TIL] #21. 리액트와의 첫만남  (0) 2022.12.06
[TIL] #19. 프로토타입  (0) 2022.12.06
[TIL] #18. 객체 지향 프로그래밍  (0) 2022.12.06
[TIL] #17. 고차함수  (0) 2022.12.06
    'TIL' 카테고리의 다른 글
    • [TIL] #22. 재귀
    • [TIL] #21. 리액트와의 첫만남
    • [TIL] #19. 프로토타입
    • [TIL] #18. 객체 지향 프로그래밍
    누코(nuuco)
    누코(nuuco)
    👩🏻‍💻 예비 프론트엔드 개발자 😎 글 쓰고, 그림 그리고, 코딩하는 것을 좋아합니다✨

    티스토리툴바