[자바스크립트 문법] Array.prototype.map(), Array.prototype.reduce(), Array.prototype.filter()

2023. 2. 19. 11:14·웹 프로그래밍/JavaScript | TypeScript
반응형

🐸 map()

  • 주어진 callback 함수를 배열 내의 모든 요소 각각에 대해 호출한 결과를 모아, 새로운 배열을 반환한다.
  • callback 함수는 다음의 3가지 인수를 가진다.
    • currentValue 처리할 배열의 현재 요소
    • index 처리할 현재 요소의 인덱스
    • array map()을 호출한 배열
  • callback 함수는 배열 값이 들어있는 인덱스에 대해서만 호출된다. 따라서 값이 삭제되거나 아직 값이 할당/정의되지 않은 인덱스에 대해서는 호출되지 않는다.
  • 원형배열의 값을 변형하지 않는다.
  • map이 시작한 이후 배열에 추가한 요소들은 callback을 호출하지 않는다.

🦄 reduce()

  • 주어진 리듀서 함수를 배열의 각 요소에 대해 실행하고, 하나의 결과값을 반환한다.
  • 반환값: 누적 계산의 결과 값
  • callback 함수는 다음의 4가지 인수를 받는다.
    • accumulator initialValue를 명시한 경우, accumlator == initialValue. initialValue를 설정하지 않은 경우, accumlator == 배열의 첫 번째 값
    • currentValue initialValue를 명시한 경우, currentValue == 배열의 첫 번째 값. initialValue를 설정하지 않은 경우, currentValue == 배열의 두 번째 값
    • currentIndex
    • array
  • 두번째 인수 initialValue로 callback의 최초 호출에서 첫번째 인수에 값을 지정할 수 있다. 배열이 비어있는데 initialValue도 제공하지 않으면 TypeError가 발생한다.

ex) reduce()의 두 번째 인수로 초기값을 제공하지 않은 경우

[1, 2, 4, 7, 9].reduce(function(accumulator, currentValue, currentIndex, array) {
    return accumulator + currentValue;
});

// [1, 2, 4, 7, 9].reduce( (prev, curr) => prev + curr ); 위 코드와 같은 결과를 반환하는 화살표 함수

callback은 4번 호출되며, 각 호출의 인수와 반환값은 다음과 같다.

callback accumulator currentValue currentIndex array 반환 값
1번째 호출 1 2 1 [1, 2, 4, 7, 9] 3
2번째 호출 3 4 2 [1, 2, 4, 7, 9] 7
3번째 호출 7 7 3 [1, 2, 4, 7, 9] 14
4번째 호출 14 9 4 [1, 2, 4, 7, 9] 23

reduce()가 반환하는 값은 마지막 콜백 호출의 반환값 23이다.

ex) reduce()의 두 번째 인수로 초기값을 제공하는 경우

[1, 2, 4, 7, 9].reduce(function(accumulator, currentValue, currentIndex, array) {
    return accumulator + currentValue;
}, 10);

// [1, 2, 4, 7, 9].reduce((prev, curr) => prev + curr, 10); 위 코드와 같은 결과를 반환하는 화살표 함수

callback은 5번 호출되며, 각 호출의 인수와 반환값은 다음과 같다.

callback accumulator currentValue currentIndex array 반환 값
1번째 호출 10 1 0 [1, 2, 4, 7, 9] 11
2번째 호출 11 2 1 [1, 2, 4, 7, 9] 13
3번째 호출 13 4 2 [1, 2, 4, 7, 9] 17
4번째 호출 17 7 3 [1, 2, 4, 7, 9] 24
5번째 호출 24 9 4 [1, 2, 4, 7, 9] 33

reduce()가 반환하는 값은 마지막 콜백 호출의 반환값 33이다.

🐾 filter()

  • 주어진 callback 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환한다.
  • callback 함수는 다음의 3가지 인수를 가진다.
    • element 처리할 배열의 현재 요소
    • index 처리할 현재 요소의 인덱스
    • array filter()을 호출한 배열
  • 반환 값: 테스트를 통과한 요소로 이루어진 새로운 배열. 테스트를 통과한 요소가 없다면 빈 배열을 반환

Ex. 12이하의 모든 요소가 걸러진 배열 생성

function BigEl(value) {
  return value >= 12;
}
var filtered = [34, 1, 3, 9, 29].filter(BigEl);
// 리턴값: Array [34, 29]


var filtered = [34, 1, 3, 9, 29].filter(function(value) {
  return value >= 12;
});
// 리턴값: Array [34, 29]


var filtered = [34, 1, 3, 9, 29].filter((value) => value >= 12);
// 리턴값: Array [34, 29]

 


출처

https://tinyurl.com/2eyy65bs

 

Array.prototype.map() - JavaScript | MDN

map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

developer.mozilla.org

https://tinyurl.com/2nrad7ku

 

Array.prototype.reduce() - JavaScript | MDN

reduce() 메서드는 배열의 각 요소에 대해 주어진 리듀서 (reducer) 함수를 실행하고, 하나의 결과값을 반환합니다.

developer.mozilla.org

https://tinyurl.com/2mn4zys2

 

Array.prototype.filter() - JavaScript | MDN

filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.

developer.mozilla.org

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'웹 프로그래밍 > JavaScript | TypeScript' 카테고리의 다른 글

[땅콩코딩] 타입스크립트 강좌 내용정리(TS의 특성, 설치 및 환경설정, 타입추론, 타입명시, 인터페이스)  (0) 2024.03.11
[모던 자바스크립트 Deep Dive] 4장. 변수  (0) 2023.05.24
[오류해결] Uncaught TypeError TypeError: Cannot set properties of null (setting 'onclick')  (0) 2023.03.22
[ZeroCho] ES2021 자바스크립트 강좌 10장 클래스_텍스트 RPG 게임 만들기  (0) 2022.08.08
[ZeroCho] ES2021 자바스크립트 강좌 9-8,9강. 셀프 체크 - 컴퓨터의 턴 만들기, 생각하는 척하는 컴퓨터 만들기  (0) 2022.08.02
[ZeroCho] ES2021 자바스크립트 강좌 9장 이차원 배열 다루기_틱택토 게임  (0) 2022.07.06
'웹 프로그래밍/JavaScript | TypeScript' 카테고리의 다른 글
  • [모던 자바스크립트 Deep Dive] 4장. 변수
  • [오류해결] Uncaught TypeError TypeError: Cannot set properties of null (setting 'onclick')
  • [ZeroCho] ES2021 자바스크립트 강좌 10장 클래스_텍스트 RPG 게임 만들기
  • [ZeroCho] ES2021 자바스크립트 강좌 9-8,9강. 셀프 체크 - 컴퓨터의 턴 만들기, 생각하는 척하는 컴퓨터 만들기
청량리 물냉면
청량리 물냉면
프로그래밍 공부를 하고 있습니다. 공부 내용 정리 겸 정보 공유를 목적으로 합니다.
    반응형
  • 청량리 물냉면
    노력중인 블로그
    청량리 물냉면
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 프로그래밍 N
        • Programming
        • C | C++
        • Java N
        • Python
      • 웹 프로그래밍
        • HTML | CSS
        • JavaScript | TypeScript
        • React
        • Vue.js
        • Next.js
        • Spring & Spring Boot
        • JSP & Servlet
        • DB
      • 웹 프로젝트
        • 웹 프로젝트
        • 🥨스낵몰
        • 👨‍👨‍👧‍👧소셜 가계부
        • 🌜꿈 일기장
        • 🔮포트폴리오 사이트
        • 🏃‍♂️팀 프로젝트: 일정관리 프로그램
        • 📈팀 프로젝트: AI기반 주식 분석 플랫폼
        • 😺Just Meow It: 고양이의 조언
      • 앱 프로그래밍
        • Flutter
        • Kotlin
      • Problem Solving
        • 백준
        • 프로그래머스
        • SWEA
      • Computer Science
        • 알고리즘
        • 컴퓨터 네트워크
        • 이산수학
      • Developer
        • 후기
        • 자료정리
        • 취업 | 취준
        • 웹개발 교육 프로그램
        • TIL
  • 블로그 메뉴

    • 홈
    • Github
  • 공지사항

    • 프로그래밍 공부 중😊
  • 인기 글

  • 태그

    React
    뉴렉처
    자바스크립트
    SWEA
    백준
    mysql
    AWS
    Jiraynor Programming
    Next.js
    강의내용정리
    공식문서
    포트폴리오
    플러터
    파이썬
    자바
    알고리즘
    spring boot
    bfs
    구현
    웹사이트
    클론 프로젝트
    d3
    Til
    프로그래머스
    프로젝트
    블로그 제작
    컴퓨터네트워크
    ZeroCho
    리액트
    타입스크립트
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
청량리 물냉면
[자바스크립트 문법] Array.prototype.map(), Array.prototype.reduce(), Array.prototype.filter()
상단으로

티스토리툴바