我想我想要的很简单,但我找不到正确的解决方案.
我在Javascript中有这种数组:
[0,38,136,202,261,399]
按下按钮,我得到0到600的生成值.我需要的是找到这个数组中最接近的较低值.
例如,如果生成的值是198,我想得到136作为结果.如果生成的值是300,我想要261 …如果它是589,我想要399等等.
到目前为止,我已尝试使用此代码:
var theArray = [ 1,3,8,10,13 ];
var goal = 7;
var closest = null;
$.each(theArray,function(){
if (closest == null || Math.abs(this - goal) < Math.abs(closest - goal)) {
closest = this;
}
});
alert(closest);
但它只返回最接近的值…现在我需要得到给定数字的最接近的较小值…我如何改进我的算法以满足我的需要?
谢谢!
最佳答案
如果你对数组进行了排序,并且足够小,那么一个非常简单的模式可以做你想要的,它简单地迭代数组,直到数字> number-in-array然后返回前一个位置的数字.
function getClosestValue(myArray,myValue){
//optional
var i = 0;
while(myArray[++i] < myValue);
return myArray[--i];
}
问候.