javascript

배열 고차 함수

노엠디엔 2023. 6. 6. 21:27

고차 함수는 인수로 전달받거나 함수를 반환하는 함수를 말함.

자바스크립트의 함수는 일급 객체이므로 함수를 값처럼 인수로 전달할 수 있으면 반환할 수도 있다.

외부 상태의 변경이나 가변 데이터를 피하고 불변성을 지향하는 함수형 프로그래밍에 기반을 두고 있다.

함수형 프로그래밍은 순수 함수와 보조 함수의 조합으로 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고

변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임이다. 

순수 함수를 통해 부수효과를 최대한 억제하여 오류를 피하고 프로그램의 안정성을 높이려는 노력의 일환이다.

 

 

Array.prototype.sort

배열의 요소를 정렬한다. 원본 배열을 직접 변경하여 정렬된 배열을 반환한다.

숫자 요소를 정렬할때는 정렬 순서를 정의하는 비교 함수를 인수로 전달해야 한다.

Aarray.prototype.forEach

조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억재하는 함수형 패러다임에 맞게 for문을 대체할 수 있는 고차 함수다.

forEacj메서드의 콜백 함수는 호출한 배열의 요소값과 인덱스, this를 순처적으로 받을 수 있다. 반환값은 undefinede다.

forEach의 콜백함수는 일반함수로 호출되므로 this는 undefined를 가리킨다.

클래스 내부의 암묵적으로 strict모드가 적용되기 때문이다.

 

Array.prototype.map

자신을 호출한 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백 함수를 반복 호출한다.

콜백 함수의 반환값들로 구성된 새로운 배열을 반환한다. 원본 배열은 변경되지 않는다.

map 메서드는 요소값을 다른 값으로 매핑한 새로운 배열을 생성하기 위한 고차 함수이다.

반환하는 새로운 배열의 length프로퍼티 값은 map메서드를 호출한 배열의 length 프로퍼티

값과 반드시 일치한다. 

 

Array.prototype.filter

자신을 호출한 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백함수를 반복 호출한다.

콜백 함수의 반환값이 ture인 요소로만 구성된 새로운 배열을 반환한다. 원본 배열은 변경되지 않는다.

filter메서드가 생서앟여 반환한 새로운 배열의 length 프로퍼티 값은 filter 메서드를 호출한 배열의 length프로퍼티 값과 같거나 작다.

Array.prototype.reduce

호출한 배열의 모든 요소를 순회하며 인수로 전달받은 콜백 함수를 반복 호출한다.

콜백 함수의 반환 값을 다음 순회 시에 콜백 함수의 첫 번째 인수로 전달하면서 콜백 함수를 호출하여

하나의 결과값을 만들어 반환한다. 원본 배열은 변경되지 않는다.

첫번째 인수로 콜백함수, 두 번째 인수로 초기값을 전달 받음

호출할때에는 언제나 초기값을 전달하는 것이 안전하다.

Array.prototype.some

자신을 호출한 배열의 요소를 순회하면서 인수로 전달된 콜백 함수를 호출한다.

콜백 함수의 반환값이 단 한 번이라도 참이면 true, 모두 거짓이면 false를 반환한다.

빈배열일 경우 false를 반환.

Array.prototype.every

자신을 호출한 배열의 요소를 순회하면서 인수로 전달된 콜백 함수를 호출한다. 콜백 함수의 반환값이 모두 참이면 true, 

단 한번이라도 거짓이면 false를 반환한다.

Array.prototype.find

자신을 호출한 배열의 요소를 순회하면서 인수로 전달된 콜백 함수를 호출하여 반환값이 true인 첫 번째 요소를 반환한다. 

콜백 함수의 반환값이 true인 요소가 존재하지 않는다면 undefined를 반환한다.

Array.prototype.findIndex

자신을 호출한 배열의 요소를 순회하면서 인수로 전달된 콜백 함수를 호출하여 반환값이 true인 찻 번째 요소의 인덱스를 반환한다.

반환값이 true인 요소가 존재하지 않는다면 -1를 반환한다.

Array.prototype.flatMap

ES10에 도입된 flatMap 메서드는 map메서드를 통해 생성된 새로운 배열을 평타화 한다.

map 메서드와 flat메서드를 순차적으로 실행하는 효과가 있다.

flatMap메서드는 인수를 전달하여 평탄화 깊이를 지정할 수 없고 1단계만 평탄화한다.

책: Modern 자바스크립트 deep dive

 

'javascript' 카테고리의 다른 글

RegExp정규 표현식  (0) 2023.06.07
Number  (0) 2023.06.07
배열 메소드  (0) 2023.06.06
배열  (0) 2023.06.04
ES6 추가 기능  (0) 2023.05.31