Autor | Zpráva | ||
---|---|---|---|
Honza_n Profil * |
#1 · Zasláno: 3. 7. 2010, 15:24:42
Ahoj,
jak napsat toto do JS? $a = array ( 'm' => array ('mz1', 'mz2', 'md1', 'md2', 'ml1', 'ml2' ), 'z' => array ('zz1', 'zz2', 'zd1', 'zd2' ), 's' => array ('sz1', 'sz2' ) ); Díky |
||
martindeveloper Profil |
#2 · Zasláno: 3. 7. 2010, 15:29:36
Třeba
var a = {"m":["mz1","mz2","md1","md2","ml1","ml2"],"z":["zz1","zz2","zd1","zd2"],"s":["sz1","sz2"]}; alert(a['m'][1]); //vypíše mz2 |
||
Honza_n Profil * |
#3 · Zasláno: 3. 7. 2010, 15:56:10
díky moc
|
||
Chamurappi Profil |
#4 · Zasláno: 3. 7. 2010, 16:35:40
Reaguji na Honzu_n:
To, co uvádíš, není dvourozměrné pole, ale pole polí. Lépe řečeno: asociativní pole normálních polí. JavaScript nepodporuje asociativní pole tak, jak jsou známá z jiných jazyků, ale podporuje objekty a práci s nimi pomocí zápisu obvyklého pro asociativní pole (jak uvádí martindeveloper). |
||
Honza_n Profil * |
#5 · Zasláno: 4. 7. 2010, 14:50:26
Šlo by to ještě upravit? Jelikož jsem si uvědomil, že těch instancí bude více, takže nebude jen var a, ale taky b, c, d ... atd. Takže bych to potřeboval všechno sjednotit do jednoho. Vím, že to mohu udělat tak, že na konec kodu přidám něco jako
var all['a']=a; var all['b']=b; Přesto ale možná to jde udělat všechno najednou. Myslím rozšířit ten kod od martindeveloper, tak aby na levé srraně bylo all= a na pravé všechno dohromady, instance a až z . |
||
Nox Profil |
stylem
var all = { "a": { "m": ["mz1", "mz2",... ], "z": [...], }, "b": { "m": ["mz1", ...], "z": [...], } }; potom alert( all["a"]["m"] ); //nebo alert( all.a.m ); |
||
Honza_n Profil * |
#7 · Zasláno: 4. 7. 2010, 15:09:27
Hm. Tak jo. Ale teď mě napadlo, jestli nebude problém s tím přistupováním. Včera jsem narazil na podobný problém v PHP. Totiž jde o to, že budu potřebovat zpracovat jednotlivé členy instance "a" pomocí cyklu. Tohle v PHP nejde, jelikož je to objekt, ne pole A jde to tady? No nevím, možná se bez toho cyklu obejdu, budu to řešit dneska. Ono to v podstatě bude fungovat tak, že ten první člen "a" definuje seznam dalších členů b, c, d, e .... Tak možná se bez cyklu obejdu.
|
||
Nox Profil |
#8 · Zasláno: 4. 7. 2010, 15:17:39 · Upravil/a: Nox
Ne, ono JS je takové volnější řekl bych
for(list in all) for(item in list) for(var i=0;i<item.length;i++) do_something(item[i]); |
||
Honza_n Profil * |
#9 · Zasláno: 4. 7. 2010, 15:50:11
Tak to je paráda, díky
|
||
Chamurappi Profil |
#10 · Zasláno: 4. 7. 2010, 18:01:10
Reaguji na Noxe:
„for(item in list)“ V iterační proměnné je u tohoto druhu cyklu vždy řetězec obsahující název členské proměnné, takže místo list by asi mělo být all[list] a pak uvnitř místo item také all[list][item] .
Krom toho také nedoporučuji vynechávat var .
|
||
Nox Profil |
#11 · Zasláno: 4. 7. 2010, 18:29:36
aha, díky za opravu, takže takto?
for(var list in all) for(var item in all[list]) for(var i=0;i < all[list][item].length;i++) do_something(all[list][item][i]); škoda že to nemá takový zkracující efekt jako foreach |
||
Chamurappi Profil |
#12 · Zasláno: 5. 7. 2010, 04:56:43
Reaguji na Noxe:
Ano, takto. „škoda že to nemá takový zkracující efekt jako foreach“ Některé prohlížeče podporují i for each .. in — to jen pro zajímavost.
|
||
Časová prodleva: 14 let
|
0