如何确定我的数字最接近哪个数组索引

How can I determine which array index my number is closest to?

本文关键字:数组 索引 最接近 何确定 我的 数字      更新时间:2023-09-26

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

var paymentMilestones = [0, 30, 60, 90];
var daysOverdue = 33;

在JavaScript中,如何通过编程确定daysOverdue变量最接近哪个paymentMilestones索引?我需要返回该值,所以在这种情况下,函数应该返回30

一个快速的答案(如果有平局,它会把两者都带回来——假设数组是预先排序的):

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);