정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.
function solution(array, n) {
var answer = 0;
var filter_arr = array.map(number=>Math.abs(number-n))
var min_num = filter_arr.indexOf(Math.min(...filter_arr))
answer = array[min_num]
return answer;
}
array
가 [ -5, 5]이고 n
이 5이면 -5와 5 둘다 최솟값이 될 수 있다.indexOf
의 경우에는 조건에 맞는 가장 첫번째 값을 반환하기 때문에 답이 틀렸던 것이다.function solution(array, n) {
var answer = 0;
// (절대값 - n)한 최솟값을 절대값으로 바꾸기
var filter_arr = array.map(number=>(Math.abs(number)-n))
var abs_arr = filter_arr.map(number => Math.abs(number))
// 절대값 중 최솟값 찾기
var min_num = Math.min(...abs_arr)
// 최솟값들을 담을 lst
var lst = []
// 최솟값에 해당하는 값들의 array값을 lst에 담기
for (let i=0; i<abs_arr.length; i++) {
if (abs_arr[i] === min_num) {
lst.push(array[i])
}
}
//lst중 최솟값 담기
answer = Math.min(...lst)
return answer;
}
Math.min
과 Math.max
를 배열에서 쓰려면 spread 연산자 ...
을 써야 값이 나온다!abs_arr
로 만들어주고abs_arr
의 최솟값 min_num
을 찾는다.abs_arr
을 for문으로 돌면서 min_num
과 값이 같으면 해당 인덱스의 array
값을 lst
에 넣어준다.lst
중 최솟값을 answer
로 반환한다.