Array.prototype.every()
사용법
every()
함수는
배열의 모든 요소가 특정 조건을 만족하는지 확인합니다.
모든 요소가 조건을 만족하면 true
를 반환하고, 하나라도 조건을 만족하지 않으면 false
를 반환합니다.
이 함수는 배열 요소를 순회하며, 주어진 콜백 함수의 조건을 모든 요소가 만족하는지 판별합니다.
다음은 배열의 모든 요소가 숫자 7
인지 every()
함수로 확인하는 예제입니다.
/* 모든 요소가 숫자 7인지 확인할 배열 */
const numbers = [7, 7, 7, 7];
/* 요소가 숫자 7인지 판별하는 콜백 함수 */
function callbackFn(element) {
return element === 7;
}
/* 모든 요소가 숫자 7인지 확인하는 every() 함수 적용 */
const allSevenNumbers = numbers.every(callbackFn);
console.log(allSevenNumbers); // true
every()
함수의 형식은 다음과 같습니다.
구문
arr.every(callback(element[, index[, array]])[, thisArg])
arr
은 every()
함수를 적용할 배열입니다.
매개변수
callbackFn |
배열의 각 요소를 처리하는 콜백 함수입니다. 콜백 함수는 배열의 요소를 전달받고, 조건을 만족하면 true 를 반환합니다. 배열의 모든 요소가 콜백 함수의 조건을 만족하면 every() 함수는 true 를 반환하고, 하나라도 만족하지 않으면 false 를 반환합니다.
콜백 함수의 매개변수: callbackFn(element[, index[, array]])
|
---|---|
thisArg |
옵션. callbackFn 함수 내부에서 사용할 this 값으로 사용할 값입니다. |
첫 번째 매개변수인 콜백 함수(callbackFn
)과 관련되어 함수의 형태별 구문 형식은 다음과 같습니다.
// 화살표 함수
every((element) => { /* … */ })
every((element[, index]) => { /* … */ })
every((element[, index[, array]]) => { /* … */ })
// 콜백 함수
every(callbackFn)
every(callbackFn[, thisArg])
// 인라인 콜백 함수
every(function (element) { /* … */ })
every(function (element[, index]) { /* … */ })
every(function (element[, index[, array]]) { /* … */ })
every(function (element[, index[, array]]) { /* … */ }[, thisArg])
반환 값
- 배열의 모든 요소가 콜백 함수의 조건을 만족하면
true
를 반환합니다. - 조건을 만족하지 않는 요소가 하나라도 있으면
false
를 반환합니다.
구현 설명
every()
함수는 배열을 순회합니다.
콜백 함수를 인자로 받아 각 요소에 대해 평가하고, 그 결과를 바탕으로 true
또는 false
를 반환합니다.
- 하나의 요소라도 조건을 만족하면
true
를 반환합니다. - 모든 요소가 조건을 만족하면
true
를 반환합니다. 즉, 배열의 모든 요소가 콜백 함수에서true
를 반환해야every()
함수 자체도true
를 반환합니다. - 만약 하나라도 조건을 만족하지 않는 요소가 있으면
false
를 반환합니다. - 배열의 순회를 계속하면서 모든 요소가 콜백 함수에서
true
를 반환하는지 확인하고, 조건을 만족하지 않는 요소를 발견하면 더 이상 요소를 검사하지 않고, 배열 순회를 멈춥니다.
활용 예제
every()
함수는 배열의 모든 요소가 특정 조건을 만족하는지 확인할 때 매우 유용합니다.
다음은 구체적인 상황을 몇 가지 예로 들어 설명합니다.
배열의 모든 요소가 유효한지 확인하기
예를 들어, 모든 입력값이 유효한 범위에 있는지 확인할 수 있습니다.
// 유효한 범위: 1부터 10까지
const numbers = [2, 5, 8, 1, 10];
const allInRange = numbers.every(num => num >= 1 && num <= 10);
console.log(allInRange); // true (모든 숫자가 1과 10 사이에 있음)
모든 상품의 가격이 1000원 이상인지 확인하기
const products = [
{id: 1, price: 1500},
{id: 2, price: 2000},
{id: 3, price: 1200}
];
/* 가격이 1000원 이상인지 판별하는 콜백 함수 */
function isPriceAtLeast1000(price) {
return price >= 1000;
}
/* 모든 상품의 가격이 1000원 이상인지 확인 */
const allPricesAtLeast1000 = products.every(product => isPriceAtLeast1000(product.price));
console.log(allPricesAtLeast1000); // true (모든 상품의 가격이 1000원 이상임)
every()
함수의 장점과 단점
every()
함수는 배열의 모든 요소가 주어진 조건을 만족하는지 간편하게 확인할 수 있는 유용한 메서드입니다. 하지만 단점 또한 존재합니다.
장점
every()
함수는 배열의 모든 요소가 조건을 만족하는지 확인하는 과정을 간결하게 표현할 수 있습니다.- 모든 요소가 조건을 만족하는 경우에만
true
를 반환하며, 조건을 만족하지 않는 요소를 발견하면 즉시false
를 반환하여 배열 순회를 멈춥니다. 이는 성능 면에서 효율적입니다.
단점
false
를 유발하는 요소를 알 수 없습니다.
every()
함수는 조건을 만족하지 않는 요소들에 대한 정보를 제공하지 않습니다. 이는 조건을 만족하지 않는 요소에 대한 분석이 필요한 경우에는 한계가 될 수 있습니다.
단점 보완 방법
every()
함수의 단점을 보완하기 위해서는 다음과 같은 방법들을 고려할 수 있습니다.
조건을 만족하지 않는 요소 식별하기
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
배열의 특정 조건을 만족하지 않는 요소를 확인하기
명세서
명세서 사양 | |
---|---|
every()
|
ECMAScript Language Specification #sec-array.prototype.every |
브라우저 호환성
메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
every()
|
1 | 12 | 1.5 | 3 |