언어/JavaScript

[some()] 배열 중 하나라도 조건을 만족한다면?

Dachaes 2025. 4. 25. 16:47
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
반응형