Buonasera,
mi chiamo gabriel e sono nuovo nel foro. Vi saluto 
Ho bisogno del vostro aiuto. Ho fatto una funzione che cerca in un array il valore più vicino a quello che passo come parametro. Ho provato in tutti i modi ma la funzione mi da risultati strani, con alcuni numeri funziona e con altri no. Non riesco a spiegarmi cosa stia succedendo. Ho provato altre varianti senza usare IndexOf ma aggiungendo un altro for che scorre l'array ma niente, sempre lo stesso problema. Potete aiutarmi?
Vi ringrazio in anticipo.
Trascrivo il codice
codice:
function trovaNumeroVicino(valore)
{
var array = [5,10,12,15,18,22,27,33,39,47,56,68,82,100,120,150,180,220,270,330,390,470,560,680,820,1000,1200,1500,1800,2200,2700];
var numVicinoGiu=-5;
var numVicinoSu=-5;
var tentativiGiu;
var tentativiSu;
// cerco nell'array valori vicini più bassi
// ----------------------------------------
for (var tempNum = valore; tempNum > -1; tempNum--)
{
if (array.indexOf(tempNum) > -1)
{ numVicinoGiu = tempNum;
break;
}
else
{
tentativiGiu++;
}
}
// cerco nell'array valori vicini più alti
// ----------------------------------------
for (var tempNum = valore; tempNum < array.length; tempNum++)
{
if (array.indexOf(tempNum) > -1)
{ numVicinoSu = tempNum;
break;
}
else
{
tentativiSu++;
}
}
// ritorno il valore con minori tentativi (su o giù il valore passato)
// -------------------------------------------------------------------
if (tentativiGiu < tentativiSu)
{ return numVicinoGiu;
}
else
{ return numVicinoSu;
}
}