배열 메서드 — *함수형의 핵심*
배열 메서드 — *함수형의 핵심*
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ map · filter · reduce · find · some · every 체이닝
- ▸✅ sort 가 원본 변경 — toSorted (ES2023) 로 불변
- ▸✅ flat · flatMap · Array.from 활용
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
필수 5가지 메서드
핵심 한 줄
JS 배열의 함수형 메서드 — map·filter·reduce·find·some/every — 만 익혀도 반복문 90% 가 사라집니다. 함수형 사고 의 시작.
map — 각 원소 변환
옛 코드: for 루프 + push. 모던: .map() 한 줄.
filter — 조건 통과만
reduce — 하나로 줄이기
reduce 는 map·filter 도 다 만들 수 있는 가장 강력한 메서드. 처음엔 헷갈리지만 익숙해지면 강력.
find — 첫 매칭
filter 가 모든 매칭, find 는 첫 번째만.
some / every — 진위 검사
if (array.find(...)) 보다 if (array.some(...)) 가 의도 명확.
체이닝 — 조립
filter → map → reduce 패턴은 SQL 의 WHERE → SELECT → SUM 과 같습니다. 의도가 직선적 으로 읽힙니다.
자주 쓰는 추가 메서드
흔한 함정
1. 원본 변경 vs 새 배열:
- ▸
sort·reverse·push·pop·splice— 원본 변경 ⚠️ - ▸
map·filter·slice·concat— 새 배열 리턴 ✅
2. forEach vs map:
forEach 는 부작용만, map 은 새 배열 만듭니다. 의도에 맞게.
한 번 정리
- ▸
map·filter·reduce= 함수형 3총사 - ▸체이닝으로 조립
- ▸원본 변경 vs 새 배열 구분 필수
- ▸for 루프 거의 볼 일 없음
find · some · every · flatMap — 추가 5종
find — 처음 만나는 한 개 만
filter 와 달리 첫 매치에서 즉시 종료. 단건 조회의 표준.
findIndex — 위치 인덱스만
some / every — boolean 반환
입력 검증·권한 검사 에 자주:
flat / flatMap — 중첩 평탄화
Array.from — 유사 배열·반복가능 → 배열
체이닝 패턴 — *바이브 코딩의 단골 표현*
한 번에 변환·필터·집계
for 루프 10줄 → 4줄 체인. AI 가 생성하는 코드의 거의 표준 패턴.
정렬 후 상위 N개
주의: sort() 는 원본 배열을 수정 합니다. 불변이 필요하면 [...users].sort(...) 또는 users.toSorted(...) (ES2023).
그룹화 + 변환
ES2024 에선 Object.groupBy(orders, o => o.status) 한 줄로 끝.
자주 만나는 함정
1. reduce 의 초깃값 빼먹기
빈 배열에 초깃값 없으면 에러. 항상 초깃값 명시.
2. map 안에서 부수효과 만들기
map 은 새 배열을 만드는 목적. 결과를 안 쓰면 forEach 가 맞습니다.
🤖 AI 에게 이렇게 요청해보세요
- ▸"이 for 루프를 filter/map/reduce 체인으로 바꿔줘"
- ▸"이 코드에서 orders 중 status='paid' 인 것만 amount 합산해서 출력해줘"
- ▸"이 sort 호출이 원본을 변경하지 않게 toSorted 로 바꿔줘"