문제 정의
숫자로 이루어진 배열과 하나의 숫자를 인자로 받는 JavaScript 함수를 작성해야 합니다. 이 함수는 배열에 포함된 모든 숫자가 두 번째 인자로 전달된 한계값보다 작을 경우 true를 반환하고, 하나라도 한계값 이상인 숫자가 존재하면 false를 반환해야 합니다.
예제 코드
다음은 위 문제를 해결하는 코드입니다 −
const arr = [5, 34, 23, 14, 78, 45, 78];
const limit = 99;
const checkEvery = (arr = [], limit = 1) => {
const allSmaller = arr.every(el => {
return el < limit;
});
return allSmaller;
};
console.log(checkEvery(arr, limit));
출력 결과
true
코드 설명
이 솔루션의 핵심은 JavaScript 배열의 내장 메서드인 every()입니다.
- every() 메서드는 배열의 각 요소에 대해 콜백 함수를 실행하며, 모든 요소가 조건을 만족할 때만 true를 반환합니다.
- 만약 단 하나의 요소라도 조건(el < limit)을 만족하지 못하면 즉시 반복을 중단하고 false를 반환하므로 효율적입니다.
- 위 예제에서 배열의 가장 큰 값은 78이고 한계값은 99이므로, 모든 요소가 99보다 작아 최종 결과는 true가 됩니다.
참고로, 반대 상황(모든 값이 한계값보다 큰지 확인)이라면 some() 메서드와 부정 연산자를 조합하거나, every()의 비교 조건을 변경하여 동일한 패턴으로 해결할 수 있습니다.