<그냥하자> JavaScript (22) 고차함수 메서드들

.·2024년 7월 30일
0

배열의 고차함수 higher order function 메서드

다른 함수(콜백 함수 callback function)를 인자로 받음
함수형 프로그래밍 - 변수 사용 없이 순회 작업들을 코딩

  1. forEach - 각 요소를 인자로 콜백함수 실행

    for문의 좋은 대체제
    단점 : 예외를 던지지 않으면 종료할 수 없음 - break, continue 사용 불가 > for of로 사용해야함

인자들:
콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg - this 주제 섹션에서 다룰 것

즉 고차함수라고 불리는 함수들은 인자로 다른 함수를 받는다.

for each 함수는 실행만 할 뿐 반환되지 않는다.

아래 처럼 사용할 수 있다.

  1. map - 각 요소를 주어진 콜백함수로 처리한 새 배열 반환

인자들: 콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg

활용법 ( 사진 순으로 점점 간단한 방법)


  1. find, findLast, findIndex, findLastIndex - 주어진 기준으로 검색

콜백함수로에 인자로 넣었을 때 true를 반환하는

  • find - 첫 번째 값 반환
  • findLast - 마지막 값 반환
  • findIndex - 첫 번째 값의 인덱스 반환
  • findLastIndex - 마지막 값의 반환
    공통 인자들: 콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
    thisArg


  1. some, every - 어떤/모든 요소가 기준을 충족하는지 확인

콜백함수에 인자로 넣은

  • some - 요소들 중 하나라도 true를 반환하는가 여부 반환
  • every - 모든 요소가 true를 반환하는가 여부 반환

인자들: 콜백함수 - 인자: ( 현재 값, 현재 값의 인덱스, 해당 배열 )
thisArg

  1. filter - 주어진 기준을 충족하는 요소들로 새 배열 만들어 반환
    (원본 배열을 수정하지 않음)

filter 함수를 이해하기전에,,, true, false 개념부터 다시

우선 i => i % 2 의미는 화살표 함수에서 i % 2 의 결과는 i 를 2로 나눈 나머지를 의미한다. i가 짝수일 때 0 인것이다. 여기서 0은 Falsy 값이므로 filter 함수에서 제외된다. 이게 중요하다.

그래서 arr.filter(i => i%2); 요게 홀수만 나오는 것이다.

Falsy 값:
다음 값들은 모두 false로 평가된다.
false
0
"" (빈 문자열)
null
undefined
NaN (Not a Number)


  1. reduce, reduceRight

주어진 콜백함수에 따라 값들을 접어 나감
인자들: 콜백함수 - 인자: ( 이전값, 현재값, 현재 인덱스, 해당 배열 )
초기화 값

초기화 값이 없을 때는 첫 번째와 두 번째 값부터

초기화 값이 있을 때 인덱스가 0부터 시작한다.

활용 예

만약 위 기능을 배열 메서드와 체이닝 없이 짰다면?

중간 과정을 저장하기 위한 변수 또는 내용이 바뀌는 참조형 데이터들이 사용되었을 것
함수형 프로그래밍 - 변수들을 코드에서 감추어 부수효과로 인한 문제 방지

지금 당장 이해가 잘 안되도 끝까지 하자,,,

  1. sort - 배열을 ( 주어진 기준대로 ) 정렬

배열 자체의 순서를 바꿈 - 원본 수정
해당 배열을 반환

인자들: 콜백함수(필수 아님) - 인자: ( 앞의 값, 뒤의 값 )

인자가 없을 경우

숫자를 문자열로 암묵적 변환하여 오름차순 정렬

⭐️ 정확한 정렬을 위해 - 콜백 함수 사용
두 인자 a와 b : 인접한 두 요소
0보다 큰 값 반환 : b를 앞으로 - 순서 뒤집음
0 반환: 순서 유지 - ECMAScript 표준은 아니므로 환경마다 다를 수 있음
0보다 작은 값 반환 : a를 앞으로 - 사실상 순서 유지


profile
해야 되는 일이 하고 싶은 일로

0개의 댓글