자바스크립트에서는 기본적으로 제공하는 고차함수들이 있다.
그 중 배열 메소드 중 아래 고차함수들이 자주 사용된다.
- forEach
- find
- filter
- map
- reduce
- sort
- some
- every
오늘은 이 내장 고차함수들에 대해 공부해 보자.
사용법은 다른 메소드들과는 약간 다르다. 변수하나만 넣어주면 되던 다른 메소드들과는 달리,
내장 고차함수들은 찾고자 하는 혹은 원하는 논리식을 함수 형태로 넣어주어야 한다.
뭔 말이지? 하겠지만 아래 예제를 통해 감을 잡아보자.
forEach
"배열".forEach(배열의 한 요소씩 꺼낼때 마다 실행하고픈 함수);
forEach는 배열을 한번씩 순환하며 파라미터값(함수)를 실행한다.
forEach가 처음에는 쓰기 어렵지만, 익숙해지면 for문 노가다에서 해방될 수 있다...!
find
"배열".find(배열의 한 요소씩 꺼낼때 마다 비교하고픈 함수);
find는 말 그대로 찾고자 하는 무언가가 있을 때 사용한다. forEach와 마찬가지로 순환하며,
함수의 조건을 충족하는 요소 중 가장 첫번째 요소를 값으로 리턴한다.
filter
"배열".find(배열의 한 요소씩 꺼낼때 마다 비교하고픈 함수);
위의 find의 경우 하나의 요소만을 반환하기 때문에, 조건에 해당하는 모든값이 필요할 때는
filter메소드를 사용하면 된다.
map
"배열".map(배열의 한 요소씩 꺼낼때 마다 적용하고픈 함수);
맵 메소드는 배열의 매 요소마다 루핑하면서 함수를 실행해 새로운 값을 새로운 배열에 나열한다.
매핑의 개념과 잘 맞아 떨어지는 메소드라 생각한다.
reduce
"배열".reduce(이전값과 현재값을 받아 실행하고픈 함수, 초기값);
reduce는 내장 고차함수들 가운데서 유독 이해하기가 어려운 듯 하다.
기본적인 개념은 배열의 모든 요소들을 하나씩 줄여가며 함수의 인자로 넣어 계산을 하고 그 결과값을 누적한다는 개념인데,
아직까지는 연습이 많이 필요할 것으로 보인다.
sort
"배열".sort((a,b) => a-b);
sort도 자세한 내부 작동이 어떻게 되는지는 아직은 정확하게 파악을 하진 못했다.
하지만 내부함수가 음수를 가지면 a를 b보다 이전에 배치하고,
내부함수가 양수를 가지면 b를 a보다 이전에 배치를 하며 오름차순 내림차순 정리를 한다.
some
"배열".some(조건식을 리턴하는 함수);
some메소드는 약간 in과 비슷한 역활을 한다.
배열안에 함수조건에 부함하는 요소가 있다면 true값을 반환한다.
every
"배열".every(조건식을 리턴하는 함수);
some을 이해했다면 every는 자동으로 이해가 된다.
some과 달리 every는 모든 요소가 함수식에 참이면 true값을 반환한다.
'Javascript' 카테고리의 다른 글
JS 심화개념 - MapReduce, Currying, Function composition, Declarative Programming (0) | 2021.10.25 |
---|---|
JS Shallow Copy (0) | 2021.10.25 |
JS Reduce 메소드 (0) | 2021.10.21 |
JS 스코프와 클로저 (0) | 2021.10.21 |
JS 원시타입과 참조타입 (0) | 2021.10.20 |