정의 및 사용 방법
배열에서 some() 함수는
배열이 특정 조건을 만족하는 요소가 하나라도 있는지 확인합니다.
하나의 요소라도 조건을 만족하면 true를 반환하고 그렇지 않으면 false를 반환합니다.
이 함수는 배열 요소를 순회하며, 주어진 콜백 함수의 조건을 만족하는 요소가 하나라도 있는지 판별합니다.
기본 예제
다음은 배열이 가지고 있는 요소에서 숫자 7이 하나라도 있는지를 some() 함수로 확인하는 예제입니다.
/* 숫자 7이 하나라도 있는지를 확인할 배열 */
const numbers = [1, 3, 5, 7, 8];
/* 요소가 숫자 7인지 판별하는 콜백함수 */
function callbackFn (element) {
return element === 7;
}
/* 숫자 7이 하나라도 있는지 확인하는 some() 함수 적용 */
const hasSevenNumber = numbers.some(callbackFn);
console.log(hasSevenNumber); // true
구문
arr.some(callback(element[, index[, array]])[, thisArg])
arr은 some() 함수를 적용할 배열입니다.
매개변수
callbackFn |
배열의 각 요소를 처리하는 콜백 함수입니다. 콜백 함수는 배열의 요소를 전달받고, 조건을 만족하면 true를 반환합니다. 하나의 요소라도 true를 반환하면 some() 함수는 즉시 true를 반환하고, 모든 요소가 조건을 만족하지 않으면 false를 반환합니다.
콜백 함수의 매개변수: callbackFn(element[, index[, array]])
|
|---|---|
thisArg |
옵션. callbackFn 함수 내부에서 사용할 this 값으로 사용할 값입니다. |
첫 번째 매개변수인 콜백 함수(callbackFn)과 관련되어 함수의 형태별 구문 형식은 다음과 같습니다.
// 화살표 함수
some((element) => { /* … */ })
some((element[, index]) => { /* … */ })
some((element[, index[, array]]) => { /* … */ })
// 콜백 함수
some(callbackFn)
some(callbackFn[, thisArg])
// 인라인 콜백 함수
some(function (element) { /* … */ })
some(function (element[, index]) { /* … */ })
some(function (element[, index[, array]]) { /* … */ })
some(function (element[, index[, array]]) { /* … */ }[, thisArg])
반환 값
- 배열의 요소 중 하나라도 콜백 함수의 조건을 만족하면
true를 반환합니다. - 조건을 만족하는 요소가 하나도 없으면
false를 반환합니다.
구현 설명
some() 함수는 배열을 순회합니다.
콜백 함수를 인자로 받아 각 요소에 대해 평가하고, 그 결과를 바탕으로 true 또는 false를 반환합니다.
- 하나의 요소라도 조건을 만족하면
true를 반환합니다. - 즉, 배열의 어떤 요소라도 콜백 함수에서
true를 반환하면some()함수 자체도true를 반환합니다. true를 반환하는 요소를 찾는다면 더 이상 요소를 검사하지 않고, 배열 순회를 멈춥니다.
활용 예제
some() 함수는 배열에 특정 조건을 만족하는 요소가 하나라도 있는지 확인할 때 매우 유용합니다.
아래에 구체적인 상황을 몇 가지 예로 들어 설명하겠습니다.
사용자 권한 확인
여러 사용자가 있는 시스템에서, 특정 권한을 가진 사용자가 있는지 확인할 수 있습니다.
다음은 사용자가 'admin' 권한을 가지고 있는지 확인하는 경우의 예제입니다.
const users = [
{id: "alice", role: "user"},
{id: "bob", role: "editor"},
{id: "charlie", role:"admin"}
];
const hasAdmin = users.some(user => user.role === "admin");
console.log(hasAdmin); // true (Charlie가 admin이므로 true)
시리얼 넘버 정품 확인하기
시리얼 넘버를 확인하는 예제는 실제 애플리케이션에서 흔히 볼 수 있는 유용한 예제입니다. 다음은 시리얼 넘버가 정품인지 확인하는 예제입니다. 이 예제는 특정 제품의 시리얼 넘버가 정품 목록에 있는지 확인하는 데 초점을 맞추고 있습니다.
const validSerialNumbers = [
"SN12345678",
"SN23456789",
"SN34567890"
];
const product = {
id: 1,
serialNumber: "SN12345678"
};
/* 시리얼 넘버가 유효한지 판별하는 콜백 함수 */
function isValidSerialNumber(serialNumber) {
return validSerialNumbers.some(validSerial => validSerial === serialNumber);
}
/* 제품의 시리얼 넘버가 유효한지 확인 */
const isProductValid = isValidSerialNumber(product.serialNumber);
console.log(isProductValid); // true (제품의 시리얼 넘버가 유효함)
some() 함수의 장점과 단점
some() 함수는 배열의 요소 중 하나라도 주어진 조건을 만족하는지 간편하게 확인할 수 있는 유용한 메서드입니다. 하지만 단점 또한 존재합니다.
장점
some() 함수는 배열의 요소 중 조건을 만족하는지 확인하는 과정을 간결하게 표현할 수 있습니다. 또한, 조건을 만족하는 요소를 찾으면 즉시 true를 반환하며, 배열의 나머지 요소를 추가로 검사하지 않습니다. 이는 성능 면에서 효율적입니다.
단점
false를 유발하는 요소를 알 수 없습니다.
some() 함수는 조건을 만족하지 않는 요소들에 대한 정보를 제공하지 않습니다. 이는 조건을 만족하지 않는 요소에 대한 분석이 필요한 경우에는 한계가 될 수 있습니다.
단점 보완 방법
some() 함수의 단점을 보완하기 위해서는 다음과 같은 방법들을 고려할 수 있습니다.
조건을 만족하지 않는 요소 식별하기
filter() 함수는
배열의 요소를 순회하면서 콜백 함수를 사용하여 원하는 조건에 따라 필터링하는 함수입니다.
필터링된 배열을 반환합니다.
const numbers = [1, 2, 3, 4, 5];
/* 홀수가 아닌 요소를 필터링하는 콜백 함수 */
function isNotOdd(num) {
return num % 2 === 0;
}
/* 홀수가 아닌 모든 요소를 확인 */
const nonOddNumbers = numbers.filter(isNotOdd);
console.log(nonOddNumbers); // [2, 4]
조건을 만족하는 요소 찾기
const numbers = [1, 2, 3, 4, 5];
/* 짝수를 찾는 콜백 함수 */
function isEven(num) {
return num % 2 === 0;
}
/* 첫 번째 짝수를 찾기 */
const firstEvenNumber = numbers.find(isEven);
console.log(firstEvenNumber); // 2
모든 요소가 조건을 만족하는지 확인하기
명세서
| 명세서 사양 | |
|---|---|
some()
|
ECMAScript Language Specification #sec-array.prototype.some |
호환성
| 메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
Node.js
|
|---|---|---|---|---|---|
some()
|
1 | 12 | 1.5 | 3 | 0.10 |