Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1

    Aiuto funzione trova numero vicino in un array

    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;
            }
    }
    Ultima modifica di inventable; 30-01-2015 a 20:24

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.