私は今この問題に数回遭遇しました、そして私はそれに対する良い解決策を持っていません。
固定されていない間隔の単純な数値配列があるとします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);