javascript - 获取最接近的值

标签 javascript

我已经多次遇到过这个问题,但我没有很好的解决方案。

假设我有一个简单的非固定间隔数字数组,myArray。我想要一个可以接受整数(可能是负数)并返回数组中最接近的值的函数。在我的示例中,我希望它返回 850

我认为我需要使用 upperlower 变量来计算出哪个数组值最接近我传入的值。

我是否走在正确的轨道上,或者是否有更有效的方法来实现这一目标,有人可以给我一个正确的方向插入吗?

这是我到目前为止所拥有的:

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/

相关文章:

javascript - 如何在变量中插入动态多行文本框生成的值

javascript - KonvaJS:分离后如何保持组中形状的位置和旋转?

javascript - 通过 OAuth 进行 Yahoo 身份验证,无需任何重定向(客户端)。是否可以?

javascript - 带有特殊字符的条件输入占位符(十六进制值)

javascript - 一段时间后HTML5音频停止工作(泄漏)

php - 显示旧响应的 Jquery ajax 请求

javascript - 在 Javascript 中对嵌套数组使用拼接

javascript - Three.js 不可见平面不适用于 raycaster.intersectObject

javascript - 使用 anchor 链接时执行 Javascript

javascript - 我可以将函数导入 typescript 类文件吗?