언어/JavaScript
[every()] 배열 모든 요소가 조건을 만족하는지 확인하는 방법
Dachaes
2025. 4. 25. 17:06
728x90
728x90
every()
자바스크립트에서 배열을 다룰 때, 모든 요소가 특정 조건을 만족하는지 검사하고 싶은 경우가 있습니다. 예를 들어, 사용자가 입력한 모든 값이 숫자인지, 또는 장바구니에 담긴 상품이 모두 유효한지 등을 확인할 때 유용하죠. 이럴 때 every() 메서드를 사용하면 깔끔하고 선언적인 코드로 원하는 검사를 빠르게 할 수 있습니다.
1. every()란?
every() 는 배열 내 모든 요소가 주어진 조건을 만족하는지 검사하는 배열 메서드입니다. 조건을 모두 만족하면 true, 하나라도 불만족하면 false 를 반환하며, 조건을 만족하지 않는 요소를 만나면 즉시 반복을 중단합니다.
문법
arr.every(callback(currentValue[, index[, array]])[, thisArg])
- callback : 각 요소에 대해 실행되는 함수
- currentValue : 현재 요소
- index (선택) : 현재 요소의 인덱스
- array (선택) : 현재 배열
- thisArg (선택) : 콜백 내부에서 사용할 this 값
기본 예제
const numbers = [2, 4, 6, 8];
const allEven = numbers.every(num => num % 2 === 0);
console.log(allEven); // true
- 모든 값이 짝수 → true
언제 every()를 사용하면 좋을까?
- 입력값이 모두 유효한지 검사할 때
- 필터링이 아닌 조건 충족 여부만 판단할 때
- 빠르게 검사하고, 하나라도 실패하면 중단해도 괜찮을 때
2. 실전 예제
a. 입력값이 모두 유효한지 검사
const inputs = ["hello", "world", ""];
const allFilled = inputs.every(value => value.trim() !== "");
console.log(allFilled); // false ("" 비어있음)
b. 사용자의 나이가 모두 18세 이상인지 확인
const users = [
{ name: "Alice", age: 21 },
{ name: "Bob", age: 19 },
{ name: "Charlie", age: 17 }
];
const allAdults = users.every(user => user.age >= 18);
console.log(allAdults); // false (Charlie는 미성년자)
c. 장바구니에 담긴 모든 상품이 재고 있음
const cart = [
{ id: 1, inStock: true },
{ id: 2, inStock: true },
{ id: 3, inStock: false }
];
const allAvailable = cart.every(item => item.inStock);
console.log(allAvailable); // false
3. every() vs some() vs filter() 비교
메서드 | 목적 | 반환값 | 조건 만족 시 행동 |
every() | 모든 요소가 조건 만족하는지 | true/false | 하나라도 실패 → 중단 |
some() | 하나라도 조건 만족하는지 | true/false | 하나라도 성공 → 중단 |
filter() | 조건 만족하는 요소 추출 | 배열 | 끝까지 순회 |
4. 자주 하는 실수 & 주의점
a. 빈 배열에 every() 사용 시 주의
const empty = [];
const result = empty.every(x => x > 0);
console.log(result); // ✅ true
- 빈 배열은 항상 true 를 반환합니다. 조건을 검사할 값이 없기 때문입니다.
- 따라서 every() 를 사용하기 전에 배열이 비어 있는지 별도 확인이 필요할 수 있습니다.
b. return을 생략해서 의도와 다른 결과가 나옴
const result = [1, 2, 3].every(num => {
num > 0; // ❌ 반환 없음
});
console.log(result); // false
해결 :
[1, 2, 3].every(num => num > 0); // ✅
또는 return 명시 :
[1, 2, 3].every(num => {
return num > 0;
});
5. 마무리
- every() 는 배열의 모든 요소가 조건을 만족하는지 검사하는 데 사용됩니다.
- 하나라도 조건을 만족하지 않으면 즉시 false 반환합니다.
- 조건 판단만 필요하고 결과값이 필요 없다면 filter() 보다 효율적입니다.
- 빈 배열에서는 항상 true 를 반환하는 점에 유의해야 합니다.
함께 보면 좋은 자료
외부 사이트 :
728x90