고차함수

EC kim·2022년 10월 1일
0

-일급객체 (특별한 취급) 대표적인 것이 함수
1. 변수에 할당 가능
2. 다른 함수의 전달인자로 전달가능
3. 다른 함수의 결과로서 리턴 가능

-고차함수는 함수를 전달인자로 받을 수 있고 함수를 리턴할 수 있는 함수
(함수를 리턴하는 함수는 커링함수라고 부르기도 한다)

-다른 함수의 전달인자로 전달되는 함수를 콜백함수라 한다.

unction double(num) {
return num * 2;
}

function doubleNum(func, num) {
return func(num);
}


  • 내장 고차함수 (filter , map , reduce)

filter - 모든 배열의 요소 중에서 특정 조건을 만족하는 요소를 걸러내는 매서드

let arr = [1, 2, 3, 4];
let output = arr.filter((num)=>{return num%2===0});
console.log(output); // ->> [2, 4]

const isLteFive = function (str) {
return str.length <= 5;
};

arr = ['hello', 'code', 'states', 'happy', 'hacking'];
let output = arr.filter(isLteFive);
console.log(output); // ->> ['hello', 'code', 'happy']


map - 기존 배열을 수정하지않고 특정조건을 만들어 새로운 값을 만들어낸다.

// 만화책 모음
const cartoons = [
{
id: 1,
bookType: 'cartoon',
title: '식객',
subtitle: '어머니의 쌀',
createdAt: '2003-09-09',
genre: '요리',
artist: '허영만',
averageScore: 9.66,
},
{
id: 2,
// .. 이하 생략
},
// ... 이하 생략
];

// 각 책의 부제 모음
const subtitles = cartoons.map((cartoon)=>{return cartoon.subtitle}); // ['어머니의 쌀', ...]


reduce (누적값,현재값,초기값) - 하나의 값으로 만든다.

누적값을 계산해준다.
초기값을 설정하지않았다면 배열의 첫번째가 초기값이 된다.

// 단행본 모음
const cartoons = [
{
id: 1,
bookType: 'cartoon',
title: '식객',
subtitle: '어머니의 쌀',
createdAt: '2003-09-09',
genre: '요리',
artist: '허영만',
averageScore: 9.66,
},
{
id: 2,
// .. 이하 생략
},
// ... 이하 생략
];

// 단행본 한 권의 평점을 누적값에 더한다.
const scoreReducer = function (sum, cartoon) {
return sum + cartoon.averageScore;
};

// 초기값에 0을 주고, 숫자의 형태로 평점을 누적한다.
let initialValue = 0
// 모든 책의 평점을 누적한 평균을 구한다.
const cartoonsAvgScore = cartoons.reduce(scoreReducer, initialValue) / cartoons.length;


  • 고차함수의 추상화

복잡한 어떤 것을 압축해서 핵심만 추출한 상태로 만드는 것을 뜻하는 용어는 추상화입니다.
함수에 대한 복잡한 로직은 감추어져 있다 = 사고 수준에서의 추상화
추상화의 수준이 높아지는 만큼 생산성도 비약적으로 상승

profile
프론트엔드 개발자 일기

0개의 댓글