Ciao a tutti! devo fare la ricerca in un array, mi basta solo sapere se in un certo array c'è un numero maggiore di zero... forse ci son più strade, siccome saranno array grossi vorrei sapere qual'è il metodo più performante in velocità, grazie![]()
Ciao a tutti! devo fare la ricerca in un array, mi basta solo sapere se in un certo array c'è un numero maggiore di zero... forse ci son più strade, siccome saranno array grossi vorrei sapere qual'è il metodo più performante in velocità, grazie![]()
codice:for(c=0;c<array.length;c++){ if(array[c]>0){ //CODICE }else{ //CODICE }}
Se ti basta sapere che ce ne sia almeno uno e t'interessa creare una variabile del tipo esiste = true/false...
Se invece l'informazione sull'esistenza non te la devi portare dietro e devi solamente eseguire delle istruzioni una tantum, questo è sicuramente il metodo più performante:codice:var aArrayEsempio = [-4, -5, 0, -11, 3, -7, 4, 6]; for (var iArrIndx = 0, nArrLength = aArrayEsempio.length, bExists = false; iArrIndx < nArrLength; iArrIndx++) { if (aArrayEsempio[iArrIndx] > 0) { bExists = true; break; } } alert(bExists);
codice:var aArrayEsempio = [-4, -5, 0, -11, 3, -7, 4, 6]; for (var iArrIndx = 0, nArrLength = aArrayEsempio.length; iArrIndx < nArrLength; iArrIndx++) { if (aArrayEsempio[iArrIndx] > 0) { //FAI QUALCOSA break; } }![]()
no a me basta sapere che ci sia un valore maggiore di zero nell'array, quindi il primo metodo? si effettivamente non mi sembra affatto male, appena ne trova uno esce, così da non fare cose di troppo
ma non sarebbe meglio così:
(ho aggiunto && bExists==false)
o già prima se trovava un numero usciva?
Originariamente inviato da carlomarx
codice:var aArrayEsempio = [-4, -5, 0, -11, 3, -7, 4, 6]; for (var iArrIndx = 0, nArrLength = aArrayEsempio.length, bExists = false; iArrIndx < nArrLength && bExists==false; iArrIndx++) { if (aArrayEsempio[iArrIndx] > 0) { bExists = true; break; } } alert(bExists);
No! Gli fai fare un'operazione in più per ogni ciclo! Già nel mio esempio appena trova un numero > 0 esce.Originariamente inviato da iacoposk8
ma non sarebbe meglio così:
(ho aggiunto && bExists==false)
o già prima se trovava un numero usciva?
ok! perfetto! allora grazie![]()
Se ti piacciono le scritture un po' stravaganti puoi utilizzare questa forma qua:
...sicuramente più sintetica. A differenza della precedente però questa modifica a ogni ciclo la variabile bExists, scrivendoci un'infinità di volte "false" tranne l'ultima volta, in cui eventualmente ci scrive "true".codice:var aArrayEsempio = [-4, -5, 0, -11, 3, -7, 4, 6]; for (var iArrIndx = 0, nArrLength = aArrayEsempio.length, bExists; !(bExists = aArrayEsempio[iArrIndx] > 0) && iArrIndx < nArrLength; iArrIndx++) { } alert(bExists);