我想获得数组中最接近的数字。它必须是这样的:

例如,我有一个数组:[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));

08-16 01:19