개발자 공부/✏️ 자바스크립트 공부
자바스크립트 filter(), some(), find() 특징 및 차이점
유정♡
2025. 5. 8. 15:04
자바스크립트에서 filter()는 배열에서 조건을 만족하는 요소만 "걸러내는(filter)" 메서드
✅ 기본 개념
let 결과배열 = 원본배열.filter(조건을판단하는함수);
- filter()는 배열의 각 요소를 순회하면서, 조건이 true인 값만 모아서 새 배열을 만들어 반환 !
- 원본 배열은 변하지 않음
✅ 간단한 예시
const numbers = [1, 2, 3, 4, 5, 6];
const evenNumbers = numbers.filter(n => n % 2 === 0);
console.log(evenNumbers); // [2, 4, 6]
- n % 2 === 0 → 짝수인지 검사
- filter()는 true인 값들만 골라서 [2, 4, 6] 새 배열을 리턴함
✅ 객체 배열 예시
const users = [
{ name: "지민", age: 24 },
{ name: "수빈", age: 30 },
{ name: "예진", age: 19 }
];
const adults = users.filter(user => user.age >= 20);
console.log(adults);
// 결과:
// [
// { name: "지민", age: 24 },
// { name: "수빈", age: 30 }
// ]
✅ 핵심 특징 요약
항목 | 내용 |
반환값 | 새 배열 |
원본 배열 변경 여부 | ❌ 변하지 않음 |
콜백 함수 반환값 | true면 포함, false면 제외 |
대표 용도 | 검색, 조건 필터링, 리스트 정제 등 |
✅ Genesys 코드에도 적용 가능 예시
예를 들어, participants 배열 중 customer인 사람만 뽑고 싶다면?
let customers = participants.filter(p => p.purpose === "customer");
✅ filter()랑 some()의 차이점
filter()랑 some()은 둘 다 배열을 검사하는 메서드지만,
목적과 반환값이 완전히 달라.
✅ 핵심 차이 요약
항목 | filter() | some() |
하는 일 | 조건을 만족하는 요소들을 모아서 새 배열 반환 | 조건을 만족하는 요소가 하나라도 있으면 true 반환 |
반환 타입 | 배열 ([]) | 불린값 (true 또는 false) |
사용 목적 | 조건에 맞는 요소들을 추출하고 싶을 때 | 조건에 맞는 요소가 있는지 여부만 확인할 때 |
✅ 예제로 비교
🔹 공통 배열
const numbers = [1, 2, 3, 4, 5];
🔸 filter()
const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4]
- 짝수만 걸러서 새 배열을 반환
🔸 some()
const hasEven = numbers.some(n => n % 2 === 0);
console.log(hasEven); // true
- 짝수가 하나라도 있으면 true
✅ 실무 예시
🧑💻 상황: 로그인한 사용자가 "admin" 역할인지 확인
const users = [
{ name: "유정", role: "user" },
{ name: "지훈", role: "admin" },
{ name: "민지", role: "user" }
];
🔹 some()으로 "admin"이 있는지?
const isAdminExist = users.some(user => user.role === "admin");
console.log(isAdminExist); // true
🔹 filter()로 "admin"인 사람 목록 얻기
const adminUsers = users.filter(user => user.role === "admin");
console.log(adminUsers);
// [{ name: "지훈", role: "admin" }]
✅ 언제 뭘 써야 할까?
상황 추천 | 메서드 |
조건 만족하는 요소를 모아야 할 때 | filter() |
조건 만족하는 요소가 있는지만 확인할 때 | some() |
if문 안에서 true/false만 필요할 때 | some() |
출력/반복할 새 배열이 필요할 때 | filter() |
find()는 some()이나 filter()랑 비슷하지만, 딱 하나만 찾고 멈춤 조건에 맞는 "첫 번째 요소"를 반환하는 메서드 !
✅ 기본 문법
const result = array.find(callback);
- 배열에서 조건을 만족하는 첫 번째 요소만 반환
- 조건에 맞는 요소가 없으면 undefined 반환
- filter는 배열 전체, find는 요소 하나!
✅ 예제
const users = [
{ name: "유정", role: "user" },
{ name: "지훈", role: "admin" },
{ name: "민지", role: "admin" }
];
const firstAdmin = users.find(user => user.role === "admin");
console.log(firstAdmin);
// { name: "지훈", role: "admin" } ✅ 조건에 맞는 첫 번째 admin
✅ filter()와 비교
const allAdmins = users.filter(user => user.role === "admin");
console.log(allAdmins);
// [
// { name: "지훈", role: "admin" },
// { name: "민지", role: "admin" }
// ]
✅ find() vs filter() vs some() 차이
메서드반환값목적
find() | 조건 만족하는 첫 요소 (객체 하나) | 조건에 맞는 1개만 찾고 싶을 때 |
filter() | 조건 만족하는 모든 요소 배열 | 조건에 맞는 여러 개 추출할 때 |
some() | true/false | 조건 만족하는 요소가 존재하는지만 확인 |
✅ 예제 상황 비교
const numbers = [1, 3, 5, 7, 8, 9];
const firstEven = numbers.find(n => n % 2 === 0); // 8
const allEvens = numbers.filter(n => n % 2 === 0); // [8]
const hasEven = numbers.some(n => n % 2 === 0); // true
✅ 언제 find()를 쓰면 좋을까?
- 고객 정보 중 ID가 1인 사람 찾기
- 전화 통화 중 특정 상태인 participant 한 명 찾기
- 단 하나의 조건만 만족하면 되는 경우 (예: 첫 로그인 유저)
728x90