Autor | Zpráva | ||
---|---|---|---|
Rihl278 Profil * |
#1 · Zasláno: 9. 5. 2010, 13:16:02
Dobrý den,
nevím jestli se to tady už probíralo ale... Potřebuji poradit s automitickým generování proměnných. Myslím tím třeba toto: var x1=1 var x2=2 var x3=3 ale abych to nemusel takto vypisovat.(Samozřejmě že ne zrovna tohle-toto je úplně nepotřebné)Zkoušel jsem to s konstrukcí var y = 0 while (y<10) { document.write("var x"+y+"="+y+") y++ document.write("alert(\"x"+y+"\")") } nebo podobně ale pokažé se nic nestalo. Ne,opravdu nejsem na hlavu.Pokud víte jak na to,nebo jestli existuje něco v PHP a v podobných jazycích,poraďte mi. Za hloupý nápad se omlouvám,je mi jen 12. |
||
Radek9 Profil |
#2 · Zasláno: 9. 5. 2010, 13:22:34 · Upravil/a: Radek9
Rihl278:
> var x1=1 > var x2=2 > var x3=3 Fuj! Četl jsi něco o polích? var x = Array(); for(i=0;i<10;i++){ x[i] = i; } „document.write("var x"+y+"="+y+")“ document.write takhle nefunguje, pouze to vypíše.
|
||
Johnik Profil |
#3 · Zasláno: 9. 5. 2010, 13:23:42 · Upravil/a: Johnik
Uloz si to do pole:
var x = new Array(); var y = 0; while (y < 10) { x.push(y++); } |
||
Rihl278 Profil * |
#4 · Zasláno: 9. 5. 2010, 13:31:49
Tak dík.Nojono mám jenom základy.Využiju.
|
||
Rihl278 Profil * |
#5 · Zasláno: 9. 5. 2010, 13:47:31
A když chci místo čísel použít řetězec???
|
||
Radek9 Profil |
#6 · Zasláno: 9. 5. 2010, 14:17:08
Rihl278:
Pole může mít v obsahu číslo, řetězec, další pole, objekt atd. V indexu řetězec, nebo číslo. var x = new Array(0); x[1] = 1; x["dvě"] = "dvě"; x["tři"] = new Array("čtyři", 5, ["šest", 7]); … |
||
ah01 Profil |
#7 · Zasláno: 9. 5. 2010, 14:30:47
Radek9:
„Pole může mít... V indexu řetězec“ Jenže to už pak není pole, ale obecný objekt. |
||
Radek9 Profil |
#8 · Zasláno: 9. 5. 2010, 14:49:02
ah01:
To je možné, ale v JS se dá zacházet s objektem (skoro) stejně jako s polem, takže v tom nevidím problém. |
||
ah01 Profil |
#9 · Zasláno: 9. 5. 2010, 15:04:37
Radek9:
To „skoro“ je ale dost podstatné, viz např.: Délka pole |
||
Časová prodleva: 7 dní
|
|||
Witiko Profil |
#10 · Zasláno: 16. 5. 2010, 17:38:30 · Upravil/a: Witiko
Radek9:
„To je možné, ale v JS se dá zacházet s objektem (skoro) stejně jako s polem, takže v tom nevidím problém.“ Já pak naopak nevidím důvod proč používat pole. Můžeš si místo toho vytvořit jednoduchý objekt a nebudeš tam mít další funkce a vlastnosti objektu Array, které tě jen budou trápit při získávání obsahu pole pomocí for(variable in object) smyčky. Aktuálně sice prohlížeče většinově do jisté míry "vnitřnosti" Array objektu v for() smyčce kryjí, nicméně stále je tu .length atribut, který se jednoduše při přiřazování atributů instanci objektu Array nemění. Problém následujícího zápisu: var x = new Array(0); x[1] = 1; x["dvě"] = "dvě"; x["tři"] = new Array("čtyři", 5, ["šest", 7]); je v tom, že x.length == 1 a dvě a tři jsou vlastnosti, které lepíš natvrdo na objekt, kterým Array v javascriptu je. To beru celkově jako mínus už jenom kvůli tomu, že se dá jeho integrita jednoduše narušit a zároveň se na něj aplikují pravidla objektů, takže například [] == [] navrací false, protože každé z polí je jiná instance objektu Array. Celkově bych ocenil lepší integraci polí přímo do jazyka, aktuální implementace by se dala až na pár klíčových slov a hranaté závorky jednoduše nahradit vlastním Array frameworkem. Proto pokud cítíš potřebu mít název pole jako textový řetězec, doporučuji spíše tento zápis: var x = new Object(); x["jedna"] = 1; x["dvě"] = "dvě"; x["tři"] = new Array("čtyři", 5, ["šest", 7]); Je pravda, že u Objektu není možné mít názvy vlastností začínající číslicí, nicméně pokud člověk skutečně někde potřebuje přiřazovat polím jak číselný index, tak textový, měl by se raději zamyslet, jestli by nešel daný zápis napsat jinak a lépe a ne využívat chabé implementace polí v javascriptu, které dovolují uživateli pracovat s instancí Array jako s jakýmkoliv jiným objektem. |
||
_es Profil |
#11 · Zasláno: 17. 5. 2010, 10:42:19 · Upravil/a: _es
Witiko:
„Je pravda, že u Objektu není možné mít názvy vlastností začínající číslicí“ Nie je to pravda. Tento kód bez problémov funguje: var x= new Object(); x[8] = "nejaký text"; alert(x[8]); V kóde bola vytvorená a čítaná vlastnosť s názvom "8". |
||
DoubleThink Profil * |
#12 · Zasláno: 17. 5. 2010, 13:40:31
Witiko:
„Celkově bych ocenil lepší integraci polí přímo do jazyka“ Tím bys udělal víc škody než užitku. Jak taková "integrace" vypadá, můžeme ostatně vidět v PHP. |
||
Witiko Profil |
#13 · Zasláno: 17. 5. 2010, 18:12:30 · Upravil/a: Witiko
_es:
„Nie je to pravda.“ Pravda to je, dojde k přetypování, stejně jako u definice proměnné: var 8 = "obsah"; object.8 ="obsah"; Obojí vyhodí chybu. [] zápis se používá pro definici názvu prvku, ten je pokud vím vždy řetězcové podstaty. |
||
Časová prodleva: 14 let
|
0