Newsgroup: it.comp.lang.javascript
Titolo: cercare duplicati array - help

non riesco a capire perche non mi funziona, ho bisogno di generare dei 
numeri ed inserirli nell'arrayu prima però deve controllare se gia non ce 
altrimenti non lo mette e ne genera unaltro però non sto riuscendo a 
risolvere grazie aiutatemi
function inizializza() {
numeri=new Array()
numeri[0]=6
c=0
esiste=""
while (c<10) {
n=Math.round(Math.random()*10)
  for (i=0;i<numeri.length;i++) {
   if (n==numeri[i]){
   esiste="s"
   }
  }
  if (esiste!="s"){
  numeri.push(n)
  c++
  }
} 

 risolvere grazie aiutatemi
[CUT]
visto che, da quel che ho capito, i numeri sono sempre 0-9, perché non
sfruttare il metodo sort() dell'array?
del tipo
var arr=[0,1,2,3,4,5,6,7,8,9];
arr.sort(sorta);
alert(arr);
function sorta(a,b) {
 return (Math.random()<0.5?-1:1);
}
-- 
"qualcuno è andato per età
 qualcuno perchè già dottore
 e insegue una maturità, si è sposato, fa carriera
 ed è una morte un po' peggiore"
									    F.G.

 risolvere grazie aiutatemi
Dipendentemente dal motivo per cui ti serve un Array di composto di
numeri casuali potresti usare un Object a mo' di Array Associativo;
Altrimenti potresti sfruttare il nuovo metodo "indexOf()":
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Objects:Array:indexOf
C'è anche il codice per implementarlo laddove non è supportato.
-- 
~ "Ho sciupato il tempo, e ora il tempo sciupa me."
(W.Shakespeare, "Riccardo II")

 ha scritto nel messaggio 
news:1sdaxyvs2enqq$.dlg@ID-171124.news.individual.net...


 ha scritto nel messaggio 
news:97cb5r3xv9ee$.dlg@ID-147253.user.individual.net...


 ma io dove sbaglio? hai idea ? 
io no, ma la console javascript di firefox che cosa ne pensa?
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.

 specificare la versione tra <script text ecc > ? grazie
No, ma se vuoi usarlo a livello crossbrowser devi inserire il codice
definito nel paragrafo "Compatibility", in modo che sia implementato
anche in quei browser che nativamente non lo supportano.
Una volta fatto questo, potrai usare tranquillamente un codice tipo:
<script type="text/javascript">
	var myArray = new Array();
 
	myArray[0]=2;
 
	if ( myArray.indexOf(2)!=-1 )
		alert("esiste");
	else
		alert("non esiste");
 
</script>
Ovviamente questo codice è puramente a scopo "didattico" :)
P.S.
Attento al quoting, non devi riportare l'intero post precedente:
 
http://wiki.news.nic.it/QuotarBene
-- 
~ "It may be that the old astrologers had the truth exactly reversed,
when they believed that the stars controlled the destinies of men.
The time may come when men control the destinies of stars."
(Arthur C. Clarke)

infatti a me non funziona ed ho vista con browser aggiornatissimo, scusami 
ma senza usare questo indexof potresti dirmi come sistemare quel codice che 
ti ho inviato insomma il ragionamento mi sembra giusto perchè non va? oppure 
se proprio non hai tempo come faccio in sintesi a generare n numeri tutti 
diversi a caso? poi non so nemmeno che significhi crossbrowser grazie 

per chi fosse interessato ho fatto cosě usando indexOf ma non mi piace 
perche devo scrivere prima il codice per i browser non supportati preferivo 
che qualcuno mi dicesse come fare senza indexOf cmq ecco
<script language="javascript">
if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;
    var from = Number(arguments[1]) || 0;
    from = (from < 0)
         ? Math.ceil(from)
         : Math.floor(from);
    if (from < 0)
      from += len;
    for (; from < len; from++)
    {
      if (from in this &&
          this[from] === elt)
        return from;
    }
    return -1;
  };
}
function inizializza() {
numeri=new Array()
numeri[0]=6
c=0
esiste=""
while (c<10) {
n=Math.round(Math.random()*10)
if (numeri.indexOf(n)==-1){
numeri.push(n)
c++
}
}
document.write(numeri)
}
grazie ciao

 poi non so nemmeno che significhi crossbrowser grazie
Significa che deve poter funzionare su piů di un browser.
-- 
~ "Non si chiama coraggio se non hai paura."
("Bounce")

 risolvere grazie aiutatemi
Dovresti fare un'analisi più dettagliata del problema, in particolare
occorre stabilire se:
1) l'insieme dei numeri casuali generabili è sempre 1..10 oppure se si deve
poter considerare un insieme qualsiasi
2) occorre generare sempre 10 numeri casuali oppure si deve poter
considerare la possibilità di generare un numero qualsiasi di numeri
A seconda delle specifiche, si sceglie quale strada percorrere.
Recentemente se n'è già discusso su questo ng, se non erro.
Nella tua funzione, poi, c'è un errore di fondo: inizializzi la variabile
"esiste" fuori dal while, quindi rischi di generare un loop infinito.
Un'ultima nota: sei avanti nel tempo :)
-- 
Nando [?]
Apostolo della Prova


Avrei preferito se ci fosse arrivato da solo. :)
-- 
~ Se i miei cattivi pensieri non fossero caricati a salve, ogni giorno
sarebbe una strage.

 Avrei preferito se ci fosse arrivato da solo. :)
Avevo anche risposto a quel tuo post dicendoti <<sono decisamente meno
"didattico" di te>>, ma l'invio è fallito :)


 "didattico" di te>>, ma l'invio è fallito :)
Tra l'altro l'OP mi ha risposto in mail (spero per sbaglio, dato che
erano cose che poteva benissimo scrivere nel NG). IMVHO, si dovrebbe
scrivere nel manifesto che qua si tende a non dare la "pappa pronta"
fine a sé stessa, ma si cerca di essere un minimo "didattici". :)
Insomma, se qualcuno cerca un NG per avere la soluzione pronta degli
esercizi di un qualche corso, ha sbagliato posto. A meno che non sia
un esercizio estremamente coinvolgente, allora forse... :P
-- 
~ "Gli affetti profondi somigliano alle donne oneste;
hanno paura di essere scoperte e passano nella vita
con gli occhi bassi." (G. Flaubert)

 fine a sé stessa, ma si cerca di essere un minimo "didattici". :)
Sì vabbè ma mò non mi cazziare, eh, ché mi fai partire male la settimana :(
:-P


 :-P
:)
-- 
~ "Le parole uccidono piů delle pallottole.
Ma le pallottole arrivano prima."
(Raffaele Cutolo)

 TP/BP/Delphi/jscr/&c, FAQ items, links.