Autor | Zpráva | ||
---|---|---|---|
Visitor Profil * |
#1 · Zasláno: 20. 4. 2007, 16:22:58
Zdravim
resim problem pruchodu pole nasledujici struktury: pole[1]['A'][1] = new Array(); pole[1]['A'][1]['ID'] = 15; pole[1]['A'][1]['nazev'] = "nejaky textik"; pole[1]['A'][2] = new Array(); pole[1]['A'][2]['ID'] = 22; pole[1]['A'][2]['nazev'] = "nejaky textik2"; pole[1]['B'][1] = new Array(); pole[1]['B'][1]['ID'] = 233; pole[1]['B'][1]['nazev'] = "nejaky textik3"; pole[2]['C'][1] = new Array(); pole[2]['C'][1]['ID'] = 2002; pole[2]['C'][1]['nazev'] = "nejaky textik4"; Potrebuji se dostat ke vsem dvojicim ID - NAZEV. Bezne to pouzivam k filtraci kde ziskam prvni a druhy index a treti si projdu. Problem mi vznika pri praci s textovym indexem (muze tam byt slozitejsi retezec nez A,B,C). Tam nebude fungovat neco jako: for (i = 1; i < pole.length; i++) { pole[i]... ... Da se nejak jednoduse obejit prvni dva indexy a pracovat jen s pole[...][...]['ID'] a pole[...][...]['nazev'] nejlepe s nejakou NEXT() syntaxi :) ? |
||
tiso Profil |
#2 · Zasláno: 20. 4. 2007, 16:42:50
Na takéto veci sa používa foreach, nie for
Takže použi 3x vnorený foreach |
||
los Profil * |
#3 · Zasláno: 20. 4. 2007, 16:47:29
Asi potrebuješ použiť konštrukciu for..in, pričom namiesto poľa použiješ objekt:
var obj = {"a": 1, "b": 2}; V tvojom prípade asi nejako takto (písal som to v tejto textaree, takže tam môžu byť nejaké chyby): var pole = [ |
||
Visitor Profil * |
#4 · Zasláno: 20. 4. 2007, 16:49:36
los: do struktury nechci sahat tu beru jako danou.
tiso: jo to me napadlo ale nejsem si zcela jist konkretnim pouzitim muzes blize nakopnout? |
||
los Profil * |
#5 · Zasláno: 20. 4. 2007, 18:10:52
Visitor
Štruktúru meniť nemusíš, skrátka použiješ for (key in pole[i])... |
||
Visitor Profil * |
#6 · Zasláno: 20. 4. 2007, 18:21:44
los: zkusim to
vylekalo me toto:
|
||
Časová prodleva: 7 dní
|
|||
Petroff Profil |
#7 · Zasláno: 27. 4. 2007, 20:33:34
Tady to máš - vyzkoušej a pak nahraď obsah bloku {} vlastním zpracováním.
Co se stalo se všemi 0-tými prvky ??? ( pole začíná přece prvkem pole[0].....?!? ) <HTML><HEAD> <script> pole = new Array(); pole[1] = new Object(); pole[1]['A'] = new Array(); pole[1]['A'][1] = new Array(); pole[1]['A'][1]['ID'] = 15; pole[1]['A'][1]['nazev'] = "nejaky textik"; pole[1]['A'][2] = new Array(); pole[1]['A'][2]['ID'] = 22; pole[1]['A'][2]['nazev'] = "nejaky textik2"; pole[1]['B'] = new Array(); pole[1]['B'][1] = new Array(); pole[1]['B'][1]['ID'] = 233; pole[1]['B'][1]['nazev'] = "nejaky textik3"; pole[2] = new Object(); pole[2]['C'] = new Array(); pole[2]['C'][1] = new Array(); pole[2]['C'][1]['ID'] = 2002; pole[2]['C'][1]['nazev'] = "nejaky textik4"; function zpracuj(pip){ for (var i = 1; i < pip.length; i++) for(var j in pi=pip[i]) for (var k = 1; k < pi[j].length; k++) { for(var l in p=pi[j][k]) document.write(l,"=",p[l],"<BR>"); document.write("<HR>") } } </script> </HEAD> <BODY style="margin:2em;font-size:1em"> <script> zpracuj(pole); </script> </BODY></HTML> |
||
Petroff Profil |
#8 · Zasláno: 28. 4. 2007, 11:29:50 · Upravil/a: Petroff
Stále zapomínám že naformátovaný text zprávy je komolen vynecháním někt.znaků ( \, whiteSPACE) s příp.interpretací navíc (\n,\t)
- a to asi není všechno.....ale mně se líbí přehledně vyhlížející text (a u kódu pochopitelně NEPROPORC.písmo - ale zdejší tag <PRE> má skoro dvojnásobné řádkování => nepoužitelné) Posílám: fantastickou finální funkci fofrem formátovanou String.prototype.margin=function(p){return " ".slice(6 *p)}; String.prototype.format=function(n,m){return this.margin(this.length-n+10) + this + this.margin(-m)}; function prevzit(o) { document.write( "ID = " , String(o.ID).format(5,6) ); document.write( "nazev = " , o.nazev ); document.write( "<HR>" ) } function zpracuj(pip) { var i, j, k, pi, p; for ( i = 1 ; i < pip.length; i++) for ( j in pi=pip[i] ) for ( k = 1 ; k < pi[j].length ; k++) prevzit( pi[j][k] ) } ====================================================================== =============== Mám prosbu: Vyrobený formátovač string.format(pred,po) mi nefunguje v případě, že počet mezer za koncem řetězce po má být nulový: String(o.ID).format(5,1) ........OK. 1 mezera String(o.ID).format(5,0) ........KO. 0 mezer Co s tím? |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0