자바스크립트의 세계에서는 특별한 대우를 받는 것들이 있다. 이런 것들을 일급 객체(first-class citizen)이라고 한다. 그 중 하나인 함수(function)가 이에 해당한다. 일급 객체의 특징은 크게 세 가지가 있다.
그렇다면 고차함수(higher order function)란 무엇일까? 함수를 인자로 받거나 함수를 리턴하는 함수를 말한다. 이 때 인자로 받는 함수를 콜백함수(callback function)라고 한다.
고차함수가 무엇인지 이해했다면 내장 고차함수에 대하여 학습할 차례이다.!
function removeElement(arr, discarder) { function isNotSame(arr1) { return arr1 !== discarder; //일치하지않으면 배열에 넣기 }; //배열 arr를 isNotSame 함수에 씌어진 조건으로 걸러낸다. let filteredArray = arr.filter(isNotSame); return filteredArray; }
내장 메소드 filter는 특정 조건을 만족하는 요소들만을 걸러내는 기능을 한다고 하였다. 위의 예제에서는 기존배열에서 discarder와 일치하는 요소를 제거한다고 하였기 때문에 이러한 상황에서 filter 메소드를 사용해주면 된다.
배열.filter(걸러낼 조건이 작성된 함수)와 같은 형태로 작성해주면 된다.
여기서는 isNotSame이 조건을 작성한 함수이기 때문에 arr.filter(isNotSame)과 같이 작성해주면 된다.
function getDoubledElements(arr) { let double = function(arr1) { return arr1 * 2; //들어온 요소에 2를 곱하기 } //배열 arr를 double 함수에 씌어진 조건으로 지정한다. let save = arr.map(double); return save; }
내장 메소드 map은 특정 논리(함수)에 의해 다른 요소로 지정되는 기능을 한다고 하였다. 위의 예제에서는 기존 배열에서 각 요소에 2를 곱한 새로운 배열을 만들어내야 하기 때문에 이러한 상황에서 map 메소드를 사용해주면 된다.
아까 filter 메소드를 사용할 떄와 같이 배열.map(다른 요소로 지정할 조건이 작성된 함수)와 같이 작성해주면 된다. 여기서는 double이 조건이 작성된 함수이기 때문에 arr.map(double)과 같이 작성해주면 된다.