#34 TIL - JS array.some() 메서드

X's Dev·2024년 7월 5일
0

TIL

목록 보기
32/38

이번 포스트에서는 JavaScript의 array.some() 메서드에 대해 알아보려 한다.

해당 메서드는 배열의 요소 중 하나 이상이 주어진 조건을 만족하는지 확인하는 데 유용하다.


array.some() 메서드의 정의

array.some() 메서드는 배열 내의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트한다.

만약 한 요소라도 조건을 만족하면 true를 반환하고, 모든 요소가 조건을 만족하지 않으면 false를 반환한다.

array.some(callback(element, index, array), thisArg);

매개변수

  1. callback: 각 요소에 대해 호출할 함수. 함수는 세 개의 인수를 받는다:
    • element: 처리할 현재 요소.
    • index (Optional): 처리할 현재 요소의 인덱스.
    • array (Optional): some을 호출한 배열.
  2. thisArg (Optional): callback을 실행할 때 this로 사용할 값.

반환 값

  • 배열 내에 주어진 판별 함수를 통과하는 요소가 하나라도 있으면 true를 반환하고, 그렇지 않으면 false를 반환한다.

사용 예시

  1. 배열 내에 짝수 요소가 있는지 확인:

    let numbers = [1, 2, 3, 4, 5];
    let hasEvenNumber = numbers.some(function(number) {
        return number % 2 === 0;
    });
    console.log(hasEvenNumber); // true
  2. 특정 조건을 만족하는 객체가 있는지 확인:

    let people = [
        { name: "Alice", age: 25 },
        { name: "Bob", age: 30 },
        { name: "Charlie", age: 35 }
    ];
    let hasPersonOver30 = people.some(function(person) {
        return person.age > 30;
    });
    console.log(hasPersonOver30); // true
  3. 화살표 함수와 함께 사용:

    let fruits = ["apple", "banana", "mango"];
    let hasBanana = fruits.some(fruit => fruit === "banana");
    console.log(hasBanana); // true
  4. thisArg 사용:

    let validator = {
        minLength: 3,
        isValid(string) {
            return string.length >= this.minLength;
        }
    };
    let strings = ["hi", "hello", "hey"];
    let hasValidString = strings.some(function(string) {
        return this.isValid(string);
    }, validator);
    console.log(hasValidString); // true

주의사항

  • some 메서드는 빈 배열에서 호출될 때 항상 false를 반환한다.
  • callback 함수는 배열 요소에 대해 true를 반환하는 즉시 실행을 중단하고 true를 반환한다.
  • callback 함수는 배열 요소를 변형하지 않지만, callback 함수의 실행 중에 배열이 변형되면 some 메서드의 동작에 영향을 줄 수 있다.

활용 예시

  1. 사용자 입력 검증:

    let userInputs = ["", null, "hello"];
    let hasValidInput = userInputs.some(input => input !== null && input.trim() !== "");
    console.log(hasValidInput); // true
  2. 특정 권한을 가진 사용자 찾기:

    let users = [
        { username: "admin", roles: ["admin", "user"] },
        { username: "guest", roles: ["guest"] },
        { username: "user1", roles: ["user"] }
    ];
    let hasAdmin = users.some(user => user.roles.includes("admin"));
    console.log(hasAdmin); // true
  3. 상품 할인 여부 확인:

    let products = [
        { name: "Product 1", discount: 0 },
        { name: "Product 2", discount: 10 },
        { name: "Product 3", discount: 0 }
    ];
    let hasDiscountedProduct = products.some(product => product.discount > 0);
    console.log(hasDiscountedProduct); // true

결론

array.some() 메서드는 배열 내의 요소 중 하나라도 주어진 조건을 만족하는지 확인하는 데 매우 유용하다.

이 메서드를 잘 활용하면 조건에 따라 배열 요소를 간편하게 확인하고 처리할 수 있다고 생각한다.

profile
성장 기록하기

0개의 댓글