Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.javascript > #7894 > unrolled thread
| Started by | Sap7 <Sap7@nospam.no> |
|---|---|
| First post | 2015-08-07 23:56 +0200 |
| Last post | 2015-08-08 09:00 +0200 |
| Articles | 3 — 2 participants |
Back to article view | Back to it.comp.lang.javascript
Non riesco proprio ad uscire da questo while loop... Sap7 <Sap7@nospam.no> - 2015-08-07 23:56 +0200
Re: Non riesco proprio ad uscire da questo while loop... Andrea Scartabelli <nome.cognome@dallepartidibigg.com> - 2015-08-08 08:41 +0200
Re: Non riesco proprio ad uscire da questo while loop... Sap7 <Sap7@nospam.no> - 2015-08-08 09:00 +0200
| From | Sap7 <Sap7@nospam.no> |
|---|---|
| Date | 2015-08-07 23:56 +0200 |
| Subject | Non riesco proprio ad uscire da questo while loop... |
| Message-ID | <mq39in$10i$1@speranza.aioe.org> |
Sono incastrato in un loop e non riesco a capirne il motivo.
Praticamente devo creare un numero random ed uscire dal ciclo solo se
questo numero non è contenuto in un'altra array.
Se lo è, randomizzo un ulteriore numero fino al verificarsi della
condizione precedente.
Questo è il mio codice.
var i = 0;
do
{
indice = Math.floor((Math.random() * max) + 1);
if ($.inArray(indice, GiocatoriEstratti) < 0) {
i = 1;
}
}
while (i != 0);
//Altro codice da eseguire una volta uscito dal loop...
L'ho modificato 10000 volte ma il while mi va in un loop infinito e non
esce mai.
Dove sbaglio?
[toc] | [next] | [standalone]
| From | Andrea Scartabelli <nome.cognome@dallepartidibigg.com> |
|---|---|
| Date | 2015-08-08 08:41 +0200 |
| Message-ID | <mq48aa$303$1@virtdiesel.mng.cu.mi.it> |
| In reply to | #7894 |
On 07/08/15 23:56, Sap7 wrote:
> Praticamente devo creare un numero random ed uscire dal ciclo solo se
> questo numero non è contenuto in un'altra array.
> Se lo è, randomizzo un ulteriore numero fino al verificarsi della
> condizione precedente.
>
> Questo è il mio codice.
>
> var i = 0;
> do
> {
> indice = Math.floor((Math.random() * max) + 1);
> if ($.inArray(indice, GiocatoriEstratti) < 0) {
> i = 1;
> }
> }
> while (i != 0);
>
> L'ho modificato 10000 volte ma il while mi va in un loop infinito e non
> esce mai.
>
> Dove sbaglio?
Ti sei incasinato con quella variabile "i": non viene trovato il numero,
"i" diventa uno e non cambia più impedendo l'uscita dal ciclo che
continua finché "i" è diverso da zero.
Eliminando la variabile "i":
do {
n = random();
} while (numeriEsistenti.indexOf(n) !== -1);
Ho usato "Array.prototype.indexOf" visto che esiste anche nel vecchio
IE9
(<https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf>),
ma vedi tu se usare jQuery.
[toc] | [prev] | [next] | [standalone]
| From | Sap7 <Sap7@nospam.no> |
|---|---|
| Date | 2015-08-08 09:00 +0200 |
| Message-ID | <mq49eh$ohb$1@speranza.aioe.org> |
| In reply to | #7895 |
Il 08/08/2015 08.41, Andrea Scartabelli ha scritto:
> do {
> n = random();
> } while (numeriEsistenti.indexOf(n) !== -1);
Ti ringrazio, ora ho risolto e ho anche capito.
Grazie!
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.lang.javascript
csiph-web