我已经多次遇到过这个问题,但我没有很好的解决方案。
假设我有一个简单的非固定间隔数字数组,myArray
。我想要一个可以接受整数(可能是负数)并返回数组中最接近的值的函数。在我的示例中,我希望它返回 850
。
我认为我需要使用 upper
和 lower
变量来计算出哪个数组值最接近我传入的值。
我是否走在正确的轨道上,或者是否有更有效的方法来实现这一目标,有人可以给我一个正确的方向插入吗?
这是我到目前为止所拥有的:
var myArray = [0,850,1800,2500,3300];
function snapTo(value){
var upper = -1;
var lower = -1;
// if the value is bigger than the last array value
if(value > myArray[myArray.length-1]){
upper = myArray[myArray.length-1];
lower = myArray[myArray.length-2];
// if the value is smaller than the first array value
} else if(value < myArray[0]){
upper = myArray[1];
lower = myArray[0];
} else {
for(var i = 0, i < myArray.length, i++){
if(value > myArray[i]){
upper = myArray[i];
lower = myArray[i-1];
break;
}
}
}
// x being the index of the closest array value to the one passed in
return myArray[x];
}
snapTo(1200);
最佳答案
您先生正在寻找binary search而不是那个!
关于javascript - 获取最接近的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029592/