고차함수이면서 메서드인 것들 어쩌구

Ryomi·2024년 10월 2일
2
post-thumbnail

저는 줄곧 메서드를, 고차함수라고 착각하며 산 것 같습니다.
최근에 항해 플러스를 과제를 하다가, 이 부분 개념이 미친듯이 헷갈리기 시작해서 찾아본 토대로 정리해보겠습니다.

(아니 그동안 헛 산 기분임,, 지금이라도 정리하는게 어디야 ~ 럭..키비키니시티본스테이크 ~ )

고차함수 VS 메서드

고차함수

  • 함수를 인수로 받거나 반환하는 함수
  • 함수 자체를 다룰 수 있다.
  • 객체와 무관하게 동작한다.

메서드

  • 객체에 속성으로 존재하는 함수
  • 객체에 바인딩되어 동작하며, 종종 객체의 상태를 조작함.
  • this 키워드를 통해 객체 내부에 접근 가능

일단 두개의 정의는 다르다. 근데,
내가 자주 쓰는 배열 객체에 메서드로 정의되어있는 함수들이 ---> 거의 고차함수란거예요

여러 배열 메서드가 고차 함수의 특징을 가지면서 메서드로 정의되어 있습니다.
이는 이들 메서드가 콜백 함수를 인수로 받기 때문입니다.
배열의 각 요소에 대해 함수를 실행하는 방식으로 동작하며,
배열의 프로토타입에 정의되어 있기 때문에 메서드로 분류됩니다.

고차 함수로 작동하는 메서드들의 대표적인 예

1. forEach

  • 배열의 각 요소에 대해 콜백 함수를 실행하지만, 반환 값이 없음.
  • 고차 함수 특징: 콜백 함수를 인수로 받아, 배열의 각 요소에 대해 작업을 수행.
  • 메서드 특징: 배열 객체에 속한 함수.

사용 예시:

const numbers = [1, 2, 3];
numbers.forEach(num => console.log(num));  // 1, 2, 3 출력

2. map

  • 설명: 배열의 각 요소에 콜백을 적용한 결과로 새로운 배열을 반환.
  • 고차 함수 특징: 콜백 함수로 배열의 각 요소를 변환하여 반환.
  • 메서드 특징: 배열의 프로토타입에 정의된 메서드.

사용 예시:

const doubled = [1, 2, 3].map(num => num * 2);  // [2, 4, 6]

3. filter

  • 배열의 각 요소에 대해 콜백 함수를 실행하고, 조건을 만족하는 요소들만 필터링하여 새로운 배열을 반환.
  • 고차 함수 특징: 콜백 함수로 조건을 검사하여, 특정 요소만 반환.
  • 메서드 특징: 배열 메서드로 정의.

사용 예시:

const evenNumbers = [1, 2, 3, 4].filter(num => num % 2 === 0);  // [2, 4]

4. reduce

  • 배열을 순회하며 값을 하나로 축약합니다. 초기값과 콜백 함수를 인수로 받습니다.
  • 고차 함수 특징: 콜백 함수를 사용해 누적 작업을 수행.
  • 메서드 특징: 배열 객체의 메서드로 정의.

사용 예시:

const sum = [1, 2, 3, 4].reduce((acc, num) => acc + num, 0);  // 10

5. find

  • 배열에서 첫 번째로 조건을 만족하는 요소를 반환.
  • 고차 함수 특징: 콜백 함수로 조건을 체크하여 해당 요소를 찾음.
  • 메서드 특징: 배열에 속한 메서드.

사용 예시:

const firstEven = [1, 2, 3, 4].find(num => num % 2 === 0);  // 2

6. some

  • 배열에서 하나라도 조건을 만족하는 요소가 있으면 true를 반환.
  • 고차 함수 특징: 콜백 함수를 통해 조건을 확인.
  • 메서드 특징: 배열 메서드로 정의.

사용 예시:

const hasEven = [1, 3, 5, 7, 8].some(num => num % 2 === 0);  // true

7. every

  • 배열의 모든 요소가 조건을 만족하는지 확인하여 true 또는 false를 반환.
  • 고차 함수 특징: 콜백 함수로 조건을 확인.
  • 메서드 특징: 배열 메서드.

사용 예시:

const allEven = [2, 4, 6].every(num => num % 2 === 0);  // true

8. findIndex

  • 조건을 만족하는 첫 번째 요소의 인덱스를 반환. 없으면 -1 반환.
  • 고차 함수 특징: 콜백 함수로 조건을 검사.
  • 메서드 특징: 배열의 프로토타입 메서드.

사용 예시:

const index = [1, 2, 3, 4].findIndex(num => num === 3);  // 2

9. sort

  • 배열을 정렬하는 메서드로, 기본적으로 문자열 기반 정렬을 하며 콜백 함수로 정렬 기준을 설정할 수 있습니다.
  • 고차 함수 특징: 콜백 함수를 인수로 받아 정렬 기준을 설정.
  • 메서드 특징: 배열 메서드로 정의.

사용 예시:

const sorted = [3, 1, 4, 1, 5].sort((a, b) => a - b);  // [1, 1, 3, 4, 5]

10. flatMap

  • 배열의 각 요소에 대해 콜백 함수를 실행하고, 결과를 평탄화하여 새로운 배열로 반환.
  • 고차 함수 특징: 콜백 함수로 배열의 각 요소를 변환.
  • 메서드 특징: 배열 메서드.

사용 예시:

const flatMapped = [1, 2, 3].flatMap(num => [num, num * 2]);  // [1, 2, 2, 4, 3, 6]

고차 함수이면서 메서드인 함수들의 특징은
이 함수들은 모두 배열 객체에 메서드로 정의되어 있습니다.

이러한 메서드들은 배열을 효율적으로 다룰 수 있게 해주며, 함수형 프로그래밍 스타일을 구현할 때 자주 사용됩니다. ✔️

profile
making a list, checking it twice 🐥

0개의 댓글