How to determine which array index my number refers to?

I have an array and var that look like this:

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

In JavaScript, how can I programmatically determine which of the paymentMilestones daysOverdue var indexes is the closest? I need this value to be returned, so in this case the function should return 30 .

0
javascript
Oct 17 '14 at 16:17
source share
1 answer

The quick answer (if there is a tie, it will return both - provided that the array is pre-sorted):

 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); 
0
Oct 17 '14 at 16:33
source share



All Articles