array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
arr | divisor | return |
---|---|---|
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
function solution(arr, divisor) {
let answer = [];
answer = arr.filter((v) => v/divisor === parseInt(v/divisor));
answer.length !== 0 ? answer.sort((a,b)=> a-b) : answer = [-1];
return answer;
}
나누어 떨어지는 값이라면 parseInt를 사용해서 자연수를 만들었을 때도, 원본 숫자값과 일치해야하므로 filter()를 사용하여 나누어 떨어지는 숫자들만 answer 배열에 담았다. 만약 나누어 떨어지는 요소가 없다면 -1을 반환해야하므로 answer 배열에 요소가 있는지 없는지에 따라 answer를 오름차순으로 정렬한 값이나 -1을 반환하도록 코드를 작성하였다.
function solution(arr, divisor) {
var answer = arr.filter(v => v%divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
나와 비슷한 코드인데 더 간결하다. parseInt를 사용하지 않고 그냥 %연산자를 사용하여 나누어떨어지는지 확인했고, answer에 -1을 담는 과정 없이 바로 [-1]을 반환하는 방법이다.