Vygenerování unikátního čísla ze seznamu – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vygenerování unikátního čísla ze seznamu – JavaScript, AJAX, jQuery – Fórum – Programujte.comVygenerování unikátního čísla ze seznamu – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Carduus0
Návštěvník
30. 8. 2011   #1
-
0
-

Ahoj,
potřebuji vygenerovat 31  čísel, která jsou v poli :
 

nějakéPole = [604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634];

a tato funkce by měla vygenerovat 31 čísel od 0 do 30 :
 

pole2 = [];

while(pole2.length < 31) {
		var randomnumber = Math.ceil(Math.random() * 32 - 1);
		var found = false;
		for(var x = 0; x < pole2.length; x++) {
			if (pole2[x] == randomnumber) {
				found = true;
				break
			}
		}
		if (!found) {
			pole2[pole2.length] = nějakéPole[randomnumber];
		}
	}

Ale v poli2 jsou i čísla, která se opakují, nevíte někdo proč?

Nahlásit jako SPAM
IP: 109.235.1.–
Nefaritus
~ Redaktor
+2
Posthunter
30. 8. 2011   #2
-
0
-

V tomto znění mi to jede:

<script type="text/javascript">
var pole2 = [];

while(pole2.length < 31) {
		var randomnumber = Math.ceil(Math.random() * 32 - 1);
		var found = false;
		for(var x = 0; x < pole2.length; x++) {
			if (pole2[x] == randomnumber) {
				found = true;
				break
			}
		}
		if (!found) {
			pole2[pole2.length] = randomnumber;
		}
	}
for(var i = 0; i<pole2.length; i++) {
	document.write(pole2[i]+' ');
}
</script>
Nahlásit jako SPAM
IP: 89.103.4.–
Carduus0
Návštěvník
30. 8. 2011   #3
-
0
-

To je divné, nyní jsem na konec cyklu while zadal alert(pole2[pole2.length - 1]); a vypsalo mi to následující čísla:
630, 623, 628, 607, 627, 628, 614, 624, 631, 623, 632, 624, 620, 633, 628, 634, 609, 610, 609, 624, 631, 614, 626, 626, 633, 621, 623, 626, 629, 615, 614

To znamená, že mi to musí dělat okolní scripty...nevadí, že používám tento cyklus while vícekrát? (místo pole2 používám pole3 atd. ale názvy proměnných nechávám)

Jinak už opravdu netuším, čím by to mohlo být v celém JS souboru je pole2 použito pouze u tohoto cyklu, nikde jinde.

Nahlásit jako SPAM
IP: 109.235.1.–
Nefaritus
~ Redaktor
+2
Posthunter
30. 8. 2011   #4
-
0
-

Já o nezkoušel na tom poli nejakePole[], ale nechal jsem si jen nagenerovat ty indexy (0..31) a žádná duplicita nebyla. Víc cyklů by vadit nemělo, jen dávej pozor na proměnné, aby se ti někam nedostávaly nechtěné hodnoty.

Nahlásit jako SPAM
IP: 89.103.4.–
Řešení
30. 8. 2011   #5
-
0
-
Vyřešeno Nejlepší odpověď

Ahoj, máš tam jen malou chybku když kontroluješ přítomnost vygenerovaného čísla v poli:

if (pole2[x] == randomnumber) {
	found = true;
	break
}

Mělo by to být takhle:

if (pole2[x] == nějakéPole[randomnumber]) {
	found = true;
	break
}
Nahlásit jako SPAM
IP: 80.251.242.–
Nefaritus
~ Redaktor
+2
Posthunter
30. 8. 2011   #6
-
0
-

#5 webdirect
Toho jsem si nevšim, proto to na těch indexech fungovalo.

Nahlásit jako SPAM
IP: 89.103.4.–
Carduus0
Návštěvník
30. 8. 2011   #7
-
0
-

Uz to vidim, kontroloval jsem, jestli neni obsah pole shodny s indexem nejakehoPole.
Diky moc lidi.

PS - jakmile tu budu na PC, oznacim prispevek za vyreseny

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.211.–
Nefaritus
~ Redaktor
+2
Posthunter
30. 8. 2011   #8
-
0
-

#7 Carduus
V pohodě, udělám to...

Nahlásit jako SPAM
IP: 89.103.4.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý