
https://school.programmers.co.kr/learn/courses/30/lessons/120890
function solution(array, n) {
let result = 0;
const abs = array.map((v) => Math.abs(v - n));
const close = abs.filter((v) => v === Math.min(...abs));
result = array.includes(n - close[0]) ? n - close[0] : n + close[0];
return result;
}
✔ array.includes(n - close[0]) ? n - close[0] : n + close[0] -> close가 1개인지 2개인지에 상관없이 동시에 적용됨
❗ close를 굳이 만들지 않고 abs에 sort 메서드를 적용했으면 어땠을까 하는 생각이 든다.
function solution(array, n) {
const abs = array.sort().map((v, i) => Math.abs(n - v));
return array[abs.indexOf(Math.min(...abs))];
}
✔ sort와 indexOf의 환상의 콜라보
✔ 가장 가까운 수가 여러 개인 경우에는 indexOf에 의해 더 왼쪽에 있는 요소를 리턴하도록 함 (sort에 의해 왼쪽에 더 작은 수가 위치하기 때문)