Javascript

17. 내장고차함수

연쥬개발쟈 2020. 9. 26. 14:56

내장고차함수 란?

자바스크립트에는 기본적으로 내장되어 있는 고차 함수들이 있습니다. 

바로 배열 메소드들중 일부가 고차함수에 해당합니다. 


1. filter

이 메소드는 이름 그래도 요소들을 걸러내는 것이 목적이다.

return 값이 true인 요소들만 모아서 새로운 배열을 만든다. return을 생략하면 undefined이므로 false를 반환한다. 

만약 만족하는 요소가 하나도 없다면 빈배열을 반환한다. 

let arr = [1, 2, 3, 4];
let output = arr.filter(짝수);
console.log(output); // ->> [2, 4]


let arr = [1, 5, 9, 4];
let output = arr.filter(짝수);
console.log(output); // ->> []

2. map

요소들을 일괄적으로 변경 할때 효과적

처음들어온 요소 만큼 반환 될때도 그 요소 수 만큼 그대로 반환된다.

// 문자열 배열에서 문자열 길이만 획득하기
var arr = ['hi', 'hello', 'byebye', 'seeyouletter'];
var arr2 = arr.map(function (str) {
    return str.length;
});
console.log(arr2); // [2, 5, 6, 12]

3. reduce

mapfilterfind로 구현할 수 있는 문제라면 reduce로도 구현할 수 있다. 

순회하며 요소들을 끼리 연산이 필요할때 쓰이면 효과적이다. 

인자값을 2개 넣어 준다. 

// 배열 요소의 합 계산하기
var arr = [10, 12, 18, 5, 5];
var sum = arr.reduce(function (pre, value) {
    return pre + value;
});
console.log(sum); // 50

4. find

filter와 비슷하지만 다른점은 반환을 단 한개의 요소만 한다는점이다. 

다시말해 순회를 하다가 true인 요소가 나오면 거기서 끝내고 처음 나온 true요소 하나만 반환한다. 

만약 반환 할 것이 하나도 없으면 undefined반환한다.

// 정수 배열에서 5의 배수인 정수만 모으기
var arr = [4, 15, 377, 395, 400, 1024, 3000];
var arr2 = arr.filter(function (n) {
    return n % 5 == 0;
});
console.log(arr2); // [15]