ежели массив отсортированный, и при этом большой, то лучше бинарный поиск
function binSearch(arr, x) {
if (!arr || !arr.length || arr[arr.length - 1] < x) return arr ? arr.length : 0;
var b = 0, e = arr.length;
while (e > b) {
var idx = Math.floor((b + e) / 2);
if (arr[idx] < x) b = idx + 1;
else e = idx;
}
return e;
}
function round(n, nums) {
var pos = binSearch(nums, n);
if (pos === nums.length) return nums[nums.length - 1];
if (pos === 0) return nums[0];
return n - nums[pos - 1] < nums[pos] - n ? nums[pos - 1] : nums[pos];
}
// -----------------
var arrayNumbers = [-5, 0, 5, 10, 15, 20, 25, 30, 35];
alert([-7, 6, 11, 28, 60].map(v => v + ' -> ' + round(v, arrayNumbers)).join('\n'))