DEV Community

Discussion on: Challenge: Get Closest Number in an Array

Collapse
 
lucifer1004 profile image
Gabriel Wu • Edited

Using JavaScript Set:

const closest_num = (nums, given_num) => {
  const min_dist = Math.min(...nums.map(num => Math.abs(num - given_num)))
  return new Set(nums).has(given_num - min_dist) ? given_num - min_dist : given_num + min_dist
}
Collapse
 
lucifer1004 profile image
Gabriel Wu • Edited

Or we can save the intermediate array:

const closest_num = (nums, given_num) => {
  const absolute_dists = nums.map(num => Math.abs(num - given_num))
  const min_absolute_dist = Math.min(...absolute_dists)
  return nums[absolute_dists.indexOf(min_absolute_dist)]
}