Javascript 如何确定编号最接近的数组索引?

Javascript 如何确定编号最接近的数组索引?,javascript,underscore.js,Javascript,Underscore.js,我有一个数组和变量,如下所示: var paymentMilestones = [0, 30, 60, 90]; var daysOverdue = 33; 在JavaScript中,如何通过编程确定daysOverduevar最接近的paymentMilestones索引?我需要返回该值,因此在这种情况下,函数应该返回30一个快速答案(如果存在平局,它将同时返回这两个值-假设数组已预排序): var PaymentMilements=[0,30,60,90]; var daysOverdue

我有一个数组和变量,如下所示:

var paymentMilestones = [0, 30, 60, 90];
var daysOverdue = 33;
在JavaScript中,如何通过编程确定
daysOverdue
var最接近的
paymentMilestones
索引?我需要返回该值,因此在这种情况下,函数应该返回
30

一个快速答案(如果存在平局,它将同时返回这两个值-假设数组已预排序):

var PaymentMilements=[0,30,60,90];
var daysOverdue=33;
函数findClose(数组,元素){
var minDelta=null;
var minIndex=null;

对于(var i=0;iTrue!我认为这个例子没有考虑到关系,也使用jquery而不是普通的javascript。检查我的简单解决方案:)检查我的更新-我相信如果这个添加是正确的,那么如果minDelta再次变大,它将停止循环,并返回上一个元素
var paymentMilestones = [0, 30, 60, 90];
var daysOverdue = 33;

function findClose(array,elem){
    var minDelta = null;
    var minIndex = null;
    for (var i = 0 ; i<array.length; i++){
        var delta = Math.abs(array[i]-elem);
        if (minDelta == null || delta < minDelta){
            minDelta = delta;
            minIndex = i;
        }
        else if (delta == minDelta) {
            return [array[minIndex],array[i]];
        }
        // unchecked: stop if delta starts becoming bigger again
        else { 
            return [array[i-1]];
        }


    }
    return array[minIndex];
}
var closest = findClose(paymentMilestones,daysOverdue);