728x90
반응형
728x90
some()
자바스크립트에서 배열을 순회하면서 하나라도 특정 조건을 만족하는 요소가 있는지 빠르게 검사하고 싶을 때, some() 메서드는 아주 유용한 도구입니다. for 반복문을 돌면서 조건을 체크하고 break 하는 코드를 쓸 필요 없이, 단 한 줄로 깔끔하게 원하는 결과를 얻을 수 있죠.
1. some()이란?
some()은 배열 내 요소 중 하나라도 주어진 조건을 만족하면 true를 반환하고, 모두 조건을 만족하지 않으면 false를 반환하는 메서드입니다. 즉, 조건 만족 여부만을 확인하고 싶을 때 최적의 선택입니다.
문법
arr.some(callback(currentValue[, index[, array]])[, thisArg])
- callback : 각 요소에 대해 실행되는 함수
- currentValue : 현재 요소
- index (선택) : 현재 요소의 인덱스
- array (선택) : 현재 배열
- thisArg (선택) : 콜백 내부에서 사용할 this 값
기본 예제
const numbers = [1, 3, 5, 8];
const hasEven = numbers.some(num => num % 2 === 0);
console.log(hasEven); // true (8이 짝수니까)
주요 특징
- 조건을 만족하는 요소가 발견되는 즉시 반복 중단 → 빠름
- 반환값은 Boolean
- 모든 요소가 조건을 만족하지 않으면 false 반환
- undefined, 빈 배열도 처리 가능
언제 some()을 써야 할까?
- 배열에 하나라도 조건을 만족하는 요소가 있는지 확인하고 싶을 때
- 필터링보다 빠르게 조건 만족 여부만 알고 싶을 때
- 조건을 만족하는 값의 내용은 필요 없고, 존재 여부만 궁금할 때
2. 실전 예제
a. 사용자 중에 관리자가 있는지 확인
const users = [
{ name: "Alice", role: "user" },
{ name: "Bob", role: "admin" },
{ name: "Eve", role: "user" }
];
const hasAdmin = users.some(user => user.role === "admin");
console.log(hasAdmin); // true
b. 장바구니에 무료 상품이 하나라도 있는지 확인
const cart = [
{ name: "노트북", price: 1200000 },
{ name: "스티커", price: 0 },
{ name: "마우스", price: 25000 }
];
const hasFreeItem = cart.some(item => item.price === 0);
console.log(hasFreeItem); // true
c. 입력값이 유효한지 간단 검증
const values = ["", null, undefined, "Hello"];
const hasValidValue = values.some(v => Boolean(v));
console.log(hasValidValue); // true ("Hello"가 유효한 값이니까)
3. some() vs every() vs find() 비교
메서드 | 목적 | 반환값 | 반복 중단 |
some() | 하나라도 조건 만족하는지 검사 | true/false | 조건 만족 시 즉시 중단 |
every() | 모두가 조건 만족하는지 검사 | true/false | 조건 불만족 시 즉시 중단 |
find() | 조건 만족하는 첫 번째 값 반환 | 값 or undefined | 조건 만족 시 즉시 중단 |
4. 자주 하는 실수 & 주의점
a. 반환값을 제대로 사용하지 않음
const arr = [1, 2, 3];
arr.some(num => num > 2); // ✅ 사용됨
arr.some(num => console.log(num > 2)); // ❌ 출력만 하고 반환 안 하면 의미 없음
- some() 의 콜백은 명확한 true/false 를 반환해야 의미가 있습니다.
b. 모든 요소에 대해 검사하고 싶다면?
- some() 은 하나라도 만족하면 중단됩니다.
- 모든 요소 검사 결과가 필요하다면 every() 사용
const allEven = [2, 4, 6].every(num => num % 2 === 0);
console.log(allEven); // true
5. 마무리
- some() 은 배열 내 요소 중 하나라도 조건을 만족하면 true, 그렇지 않으면 false를 반환합니다.
- 조건을 만족하는 요소를 빠르게 검사하고 싶을 때 최적화된 메서드입니다.
- every(), find() 와 비교하여 의도를 명확히 구분해서 사용해야 합니다.
함께 보면 좋은 자료
외부 사이트 :
반응형
728x90
반응형
'언어 > JavaScript' 카테고리의 다른 글
[이벤트 객체] 클릭 이벤트의 진짜 주인공은 누구인가? (0) | 2025.05.04 |
---|---|
[every()] 배열 모든 요소가 조건을 만족하는지 확인하는 방법 (0) | 2025.04.25 |
[forEach()] 배열을 반복하면서 작업을 수행하는 방법 (0) | 2025.04.25 |
[includes()] 배열에 특정값이 존재하는지 확인하는 방법 (0) | 2025.04.25 |
[find()] 조건에 맞는 첫 번째 값을 찾는 방법 (0) | 2025.04.25 |