문제 정의
숫자로 이루어진 배열과 하나의 숫자를 두 개의 인수로 받는 JavaScript 함수를 작성해야 합니다.
이 함수는 배열을 필터링하여 두 번째 인수로 전달된 숫자로 나누어 떨어지는 요소만 남긴 뒤, 그 결과 배열을 반환해야 합니다.
예제 코드
다음은 이 문제를 해결하는 코드입니다 −
const arr = [56, 33, 2, 4, 9, 78, 12, 18];
const num = 3;
const divisibleBy = (arr = [], num = 1) => {
const canDivide = (a, b) => a % b === 0;
const res = arr.filter(el => {
return canDivide(el, num);
});
return res;
};
console.log(divisibleBy(arr, num));
코드 설명
divisibleBy 함수는 두 개의 매개변수를 받습니다. 첫 번째는 대상 배열이고, 두 번째는 나누는 기준이 되는 숫자입니다(기본값은 1).
내부의 canDivide 헬퍼 함수는 모듈로 연산자(%)를 사용해 a를 b로 나눈 나머지가 0인지 확인합니다. 나머지가 0이라면 a는 b로 나누어 떨어진다는 의미입니다.
이후 Array.prototype.filter() 메서드를 통해 배열의 각 요소를 검사하고, 조건을 만족하는 요소들만 모아 새로운 배열로 반환합니다. filter()는 원본 배열을 변경하지 않으므로 안전하게 사용할 수 있습니다.
출력 결과
[ 33, 9, 78, 12, 18 ]
배열 [56, 33, 2, 4, 9, 78, 12, 18] 중에서 3으로 나누어 떨어지는 숫자는 33, 9, 78, 12, 18이므로 위와 같은 결과가 출력됩니다.