이번 글에서는 숫자 배열을 첫 번째 인수로 받고, 두 번째 인수로 상한(upper limit), 세 번째 인수로 하한(lower limit)을 받는 JavaScript 함수를 작성해 보겠습니다.
이 함수의 역할은 주어진 배열을 필터링하여, 상한과 하한으로 지정된 범위에 속하는 요소들만 모아 새로운 배열로 반환하는 것입니다. 이때 상한값과 하한값 자체도 결과에 포함됩니다(경계값 포함).
예제 코드
const array = [18, 23, 20, 17, 21, 18, 22, 19, 18, 20];
const lower = 18;
const upper = 20;
const filterByLimits = (arr = [], upper, lower) => {
let res = [];
res = arr.filter(el => {
return el >= lower && el <= upper;
});
return res;
};
console.log(filterByLimits(array, upper, lower));코드 설명
핵심은 자바스크립트 배열의 내장 메서드인 filter()입니다. filter()는 콜백 함수가 true를 반환하는 요소들만 골라 새로운 배열을 만들어 줍니다.
여기서 콜백 함수는 각 요소 el이 하한값(lower)보다 크거나 같고, 동시에 상한값(upper)보다 작거나 같은지를 검사합니다. 즉, el >= lower && el <= upper 조건을 만족하는 요소만 결과 배열에 남게 됩니다.
실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.
[ 18, 20, 18, 19, 18, 20 ]
원본 배열에서 18 이상 20 이하인 값들만 추출되어 새 배열로 반환된 것을 확인할 수 있습니다. 원본 배열인 array는 변경되지 않으며, filter()가 항상 새 배열을 생성하기 때문에 기존 데이터를 안전하게 유지할 수 있다는 장점도 있습니다.