TIL 12일차 - [JS/Node] 고차함수

tamagoyakii·2021년 10월 19일
0

TIL

목록 보기
12/31
post-thumbnail

❣ Achievement Goals ❣

⏺ 고차함수 이해하기

  • 일급 객체(first-class citizen)의 세 가지 특징을 설명할 수 있다.
    1. 변수에 할당할 수 있다.
    2. 다른 함수의 인자로 전달될 수 있다.
    3. 다른 함수의 반환값이 될 수 있다.
  • 고차 함수(higher-order function)에 대해 설명할 수 있다.

    함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수이다. 여기서 다른 함수(caller)의 인자로 전달되는 함수를 콜백 함수(callback function)이라고 부른다.

  • 고차 함수를 자바스크립트로 작성할 수 있다.

    Yes ! 😏
    map 함수를 사용해보자.

    
    let arr = [2, 4, 6, 8];
    arr.map(function(el) {
        return el + 5;
    });

    이는 이렇게 줄여서 쓸 수 있다.

    arr.map(el => el + 5);

⏺ 내장 고차함수 이해하기

  • 배열 내장 고차함수 filter에 대해서 이해할 수 있다.

    arr.filter(특정 조건)
    모든 배열 요소 중 특정 조건(함수)을 만족하는 요소만 걸러준다. 여기서 특정 조건을 명시하는 함수는 boolean으로 리턴된다.

    배열 요소 중 짝수만 걸러보자.

    arr.filter(el => el % 2 === 0);
  • filter에 대한 이해를 기반으로, 나머지 고차함수를 스스로 학습할 수 있다.

    forEach : 배열의 각 요소가 특정 논리에 의해 다른 요소로 지정된다.
    map 함수와 비슷하다. 하지만 map 함수와 달리 forEach 함수에는 리턴 값이 없다. 따라서 함수를 사용할 때 꼭 지정된 요소를 담을 변수를 설정해주어야 한다.

    arr.forEach((el, i) => arr2[i] = el * 3);

    find : 배열의 요소를 찾을 때 사용한다. 리턴 값은 해당 요소가 존재할 때 요소의 값, 아닐 때 undefined 이다.

    arr.find(el => el === 2);

    map : 배열의 각 요소가 특정 논리에 의해 다른 요소로 지정된다. 위의 forEach와 다르게 새로 생성된 배열을 리턴한다.

    
    let arr2 = [];
    arr2 = arr.map(el => el * 5);
    arr.map((el, i) => arr2[i] = el * 5);

    reduce : 배열의 각 요소를 특정 함수에 따라 하나의 형태로 응축(reduction)한다.
    (➡ 초기값(누적값) + 현재값 = 누적값) 마지막 누적값이 리턴값이다.
    누적값은 acc(accumulator), 현재값은 cur(current)로 많이 쓰인다.

    
    arr.reduce((a, b) => a + b, 0);
    arr.reduce((a, b) => a + b, '');

    여기서 마지막에 넣어주는 값이 초기값이다. 이는 리턴 값의 형식을 결정해준다.(0, '', [], {})

    sort : 배열의 요소를 사전식으로 정렬해준다.

    
    arr.sort();
    arr.sort((a, b) => a - b); // 오름차순 정렬
    arr.sort((a, b) => b - a); // 내림차순 정렬

    some : 배열의 요소 중 특정 논리에 참인 요소가 하나라도 있는지 알려준다. 리턴 값은 boolean 이다.

    
    let arr = [1, 2, 3, 5, 7, 9];
    arr.some(el => el % 2 === 0); // true

    every : 배열의 모든 요소가 특정 논리에 참인지 알려준다. some과 마찬가지로 boolean을 리턴한다.

    
    let arr = [1, 2, 3, 5, 7, 9];
    arr.some(el => el % 2 === 1); // false
  • 추상화(abstraction)에 대해 설명할 수 있다.

    추상화란 복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것이다.

  • 추상화의 관점에서 고차 함수가 갖는 이점에 대해 설명할 수 있다.

    추상화는 핵심을 추출하기 때문에 생산성을 향상시킨다. 일반 함수는 값(value)를 처리하기 때문에 값 수준의 추상화가 가능하다면, 고차 함수는 함수(function), 즉 사고의 묶음을 처리하기 때문에 사고 수준의 추상화가 가능해진다.

  • 고차 함수를 활용하여 프로그램을 작성할 수 있다.

    Yes ! 🙄

고차함수를 배운 이상 알고리즘 천재가 될 수 밖에 없겠다. 으하하 !

0개의 댓글