我想获得数组中最接近的数字。它必须是这样的:
例如,我有一个数组:[1, 3, 7, 15, 40, 55, 70, 80, 95]
数字变量:numberD1
;
如果数字D1:8-最接近的数字只能是7。不是15。
如果数字D1:54-只能是40。不能是55。
我的意思是,我想要这样的最接近的数字。但是我选择的数字不能大于最近的数字(例如Math.floor()
函数)。
对不起,我的英语不好。我希望我告诉我的问题一样好。
最佳答案
您可以使用此:
// sample array
a = [1, 3, 7, 15, 40, 55, 70, 80, 95]
// get right number
function getClosest(a, numberD1) {
return numberD1 - a.reduce(function(closest, v) {
return numberD1 >= v ? Math.min(numberD1-v, closest) : closest;
}, 1e100);
}
// output result
document.write(8 + ' => ' + getClosest(a, 8));
document.write('<br>');
document.write(54 + ' => ' + getClosest(a, 54));