OI7MI
[JavaScript] filter() – 배열에서 특정 값 제거하기 본문
filter()
배열에서 조건을 통과한 요소만 남겨서 새로운 배열을 만드는 메서드로
원본 배열은 변경되지 않는다.
(각 요소가 조건을 통과(true)하면 남기고, 통과하지 못하면(false) 버림)
1. filter의 기본 동작
array.filter()
- 배열의 요소를 하나씩 함수에 전달
- 함수는 반드시 true 또는 false를 반환
- true → 결과 배열에 포함
false → 결과 배열에서 제외
👉 true만 남긴다
2. 항상 true / false를 반환하면?
[1, 2, 3].filter(() => true); // [1, 2, 3]
[1, 2, 3].filter(() => false); // []
- 항상 true → 전부 남김
- 항상 false → 전부 제거
3. 특정 값 제거하기
const arr = ['a', 'b', 'c'];
arr.filter(item => item !== 'a'); // ['b', 'c']
- 'a' → false → 제거
- 'b' → true → 유지
- 'c' → true → 유지
4. 객체 배열에서 삭제 (Todo 예제)
toDos = toDos.filter(todo => todo.id !== targetId);
- targetId와 같은 id만 false
- 나머지는 모두 true
- 결과적으로 해당 Todo 하나만 제거
filter를 한 문장으로 요약하면 filter()는
각 요소를 검사해서 true인 것만 모아 새 배열을 만든다.
핵심 정리
- filter()는 삭제용 함수가 아니라 “선별” 함수
- false를 모으는 게 아니라 true를 남긴다
- 원본 배열은 변하지 않고 새 배열을 반환
- 삭제 로직은 “지울 대상만 false로 만드는 방식”
'프론트엔드 > JavaScript' 카테고리의 다른 글
| [JavaScript] 현재 위치 날씨 가져오기 (Geolocation + OpenWeatherMap) (1) | 2025.12.16 |
|---|---|
| [JavaScript] localStorage 저장하기 JSON.stringify(), JSON.parse() (0) | 2025.12.10 |
| [JavaScript] append() vs appendChild() 차이 (0) | 2025.12.10 |
| [JavaScript] setTimeout과 setInterval 차이 (0) | 2025.12.07 |
| [JavaScript] 브라우저 기본 동작 제어 : preventDefault() (1) | 2025.12.02 |