Número Mais Próximo //Repositório JavaScript

Descrição

Dado um array numérico ordenado e um número "X", retorna o índice do número mais próximo de "X".
Criado: 2008.03.14

Código (Download)

//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/array/nearest-number [rev. #0]

function getNearestNumber(a, n){
    if((l = a.length) < 2)
        return l - 1;
    for(var l, p = Math.abs(a[--l] - n); l--;)
        if(p < (p = Math.abs(a[l] - n)))
            break;
    return l + 1;
}

Exemplo (Exemplo)

<script type="text/javascript">
//<![CDATA[

var array = [0, -3, 10, -10, 15];

//Must be sorted from the smallest to the highest
array = array.sort(function(a, b){
    return a - b;
});

document.write(
    "Array = [", array, "]<br />Indexes of the nearest numbers to:<br />",
    "5 = ", getNearestNumber(array, 5), "<br />",
    "9 = ", getNearestNumber(array, 9), "<br />",
    "15 = ", getNearestNumber(array, 15), "<br />",
    "-15 = ", getNearestNumber(array, -15), "<br />",
    "-2 = ", getNearestNumber(array, -2)
);

//]]>
</script>

Ajuda

getNearestNumber(a: Array, n: Number): Integer
Procura o número mais próximo do argumento "n" na array e retorna seu índice, ou -1 sempre que a array estiver vazia.
a
array de números *ordenada* do menor para o maior
n
número de referência

Ranque (Votos: 22)

3.41