Array.prototype.some()
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
some()
메서드는 배열 안의 어떤 요소라도 주어진 판별 함수를 적어도 하나라도 통과하는지 테스트합니다. 만약 배열에서 주어진 함수가 true을 반환하면 true를 반환합니다. 그렇지 않으면 false를 반환합니다. 이 메서드는 배열을 변경하지 않습니다.
시도해 보기
const array = [1, 2, 3, 4, 5];// Checks whether an element is evenconst even = (element) => element % 2 === 0;console.log(array.some(even));// Expected output: true
구문
// 화살표 함수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
메서드는반복 메서드입니다. 이 메서드는 주어진callbackFn
함수가참 같은 값을 반환할 때까지 배열 안에 있는 각각의 요소마다 한 번씩 호출합니다. 만약 그러한 요소를 찾았으면some()
메서드는 그 즉시true
를 반환하며 배열 순회를 멈춥니다. 그렇지 않고callbackFn
이 모든 요소에 대해거짓같은 값을 반환하면some()
은false
를 반환합니다.
some()
은 수학에서 존재 한정자와 같은 역할을 합니다. 특히 빈 배열의 경우 모든 조건에 대해false
를 반환합니다.
callbackFn
는 값이 할당된 배열 인덱스에서만 실행됩니다.희소 배열의 빈 슬롯에서는 실행되지 않습니다.
some()
은 호출된 배열의 값을 변경하지 않지만, 제공된callbackFn
에서는 가능합니다. 그럼에도 배열의 길이는callbackFn
의 첫 실행 이전에 저정된다는 점을 명심하시기 바랍니다.
callbackFn
은some()
호출되어 시작할 당시 배열의 초기 길이를 넘어서는 요소는 방문하지 않습니다.- 이미 방문했던 인덱스를 변경해도
callbackFn
은 해당 인덱스에 대해callbackFn
을 다시 실행하지 않습니다 - 만약 존재하나 아직 방문하지 않은 배열의 요소는
callbackFn
이 변경시킬 수 있습니다. 이 값은callbackFn
이 요소에 방문하는 시점에callbackFn
에 넘겨지는 값입니다.삭제한 요소는 방문하지 않습니다.
some()
메서드는제너릭입니다.this
값에length
속성과 정수 키 속성만 있으면 됩니다.
예제
배열의 요소 테스트
다음 예제는 배열 내 요소 중 하나라도 10보다 큰지 판별합니다.
function isBiggerThan10(element, index, array) { return element > 10;}[2, 5, 8, 1, 4].some(isBiggerThan10); // false[12, 5, 8, 1, 4].some(isBiggerThan10); // true
화살표 함수를 사용한 배열의 요소 테스트
화살표 함수는 같은 테스트에 대해 더 짧은 구문을 제공합니다.
[2, 5, 8, 1, 4].some((x) => x > 10); // false[12, 5, 8, 1, 4].some((x) => x > 10); // true
값이 배열 내 존재하는지 확인
includes()
메서드의 기능을 모방하기 위해 이 사용자 지정 함수는 요소가 배열에 있는 경우true
반환합니다.
const fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some((arrVal) => val === arrVal);}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // true
어떠한 값이건 불리언으로 변환
const TRUTHY_VALUES = [true, "true", 1];function getBoolean(value) { if (typeof value === "string") { value = value.toLowerCase().trim(); } return TRUTHY_VALUES.some((t) => t === value);}getBoolean(false); // falsegetBoolean("false"); // falsegetBoolean(1); // truegetBoolean("true"); // true
희소 배열에 some() 사용하기
some()
은 빈 슬롯에 조건자를 실행하지 않습니다.
console.log([1, , 3].some((x) => x === undefined)); // falseconsole.log([1, , 1].some((x) => x !== 1)); // falseconsole.log([1, undefined, 1].some((x) => x !== 1)); // true
배열이 아닌 객체에 some() 호출하기
some()
메서드는this
의length
속성을 읽고 객체의 마지막에 도달하거나callbackFn
이true
를 반환할 때 까지 정수 인덱스로 접근합니다.
const arrayLike = { length: 3, 0: "a", 1: "b", 2: "c",};console.log(Array.prototype.some.call(arrayLike, (x) => typeof x === "number"));// false
명세
Specification |
---|
ECMAScript® 2026 Language Specification # sec-array.prototype.some |