我幾次遇到這個問題,我沒有一個很好的解決方案。獲取最接近的值
假設我有一個非固定間隔的簡單數字排列,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);
http://stackoverflow.com/questions/3561275/using-jquery-how-would-i-find - 最接近匹配的數組到指定的數字 – jwaliszko