Underbar_Library

dice0314·2023년 5월 15일
0

라이브러리(Library)

  • 재사용 가능한 코드의 모음
  • 특정 기능이나 작업을 수행하는 함수, 클래스, 모듈 등의 집합

Underbar

  • 배열 메서드가 브라우저에서 자체적으로 지원되지 않던 시절 개발자들이 만든 배열이나 객체를 다루기 위한 도구 모음집

underbar 구현

_.each

_.each = function (collection, iteratee) {
  // iteratee 함수가 입력값으로 들어온다.
  // iteratee은 배열의 각 요소를 인자로 넣고 실행할 함수
  // 배열인지 아닌지 검사
  // 배열이면 순회해서 iteratee를 실행하는 코드를 작성
  // 객체라면 for in 문을 사용해서 순회
  if(Array.isArray(collection)){
    for(let i = 0; i < collection.length; i++) {
      // i를 인덱스로 사용하여 배열의 각 요소들을 참조할 수 있다.
      iteratee(collection[i], i, collection);
    }
  } else {
    for(let key in collection){
      iteratee(collection[key], key, collection);
    }
  }
  }
};

_.reduce

_.reduce = function (arr, iteratee, initVal) {
  // 초기값(initVal)을 매개변수로 받았다면 initVal을 초기값으로 할당한다.
  // 초기값(initVal)을 받지 못했다면 배열의 첫 요소를 초기값으로 할당한다.
  let result = initVal !== undefined ? initVal : arr[0];
  // 조건1. 만들어진 _.each를 사용
  _.each(arr, function(el, index, arr){
    // 조건2. 초기값 매개변수가 없다면 배열 첫 요소를 초기값으로 하고,
    // 두번째 요소부터 작동시킨다.
    // 초기값을 받지 못했고, 배열의 첫요소를 받았다면 반환한다.
    if(initVal === undefined && index === 0){
      return;
    }
    result = iteratee(result, el, index, arr);
  })
  return result;
};
profile
정리노트

0개의 댓글