Portál AbcLinuxu, 12. května 2025 05:41

Dotaz: javascript: vyhodnocení tří proměnných najednou

15.7.2016 20:13 mica
javascript: vyhodnocení tří proměnných najednou
Přečteno: 374×
Odpovědět | Admin
Zdravím, při své skromné znalosti javascriptu jsem narazil na problém, na kterém jsem ztroskotal. Mám tři proměnné a potřebuju s nimi toto: jestliže proměnná1 nabývá některou z vyjmenovaných hodnot a zároveň proměnná2 nabývá některou z vyjmenovaných hodnot a zároveň proměnná3 nabývá některou z vyjmenovaných hodnot, vypiš tvrzení1, jinak vypiš tvrzení2. Představoval jsem si, že to (schematicky) napíšu takto:
if ((promenna1==hodnota1) || (promenna1==hodnota2)) && ((promenna2==hodnota1) || (promenna2==hodnota2)) && ((promenna3==hodnota1) || (promenna3==hodnota2)) {...}
jenže to nefunguje. Pokud jsou v podmínce jen hodnoty první proměnné, vypíše se skutečně tvrzení1 nebo tvrzení2 podle toho, jakou hodnotu proměnná1 právě má, ale když připojím druhou proměnnou, nevypíše se už vůbec nic. Buď tam mám "pravopisnou" chybu nebo se to takto udělat nedá. Prosím o radu. Děkuji.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.7.2016 20:52 ttt
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Chybí tam závorky okolo celého výrazu, if musí být ve tvaru if (...) { }. A problém je s prioritou operátorů a || b && c || d se vyhodnotí stejně jako a || (b && c) || d. Je tedy potřeba to uzávorkovat (a || b) && (c || d). Nebo přepsat, aby tam taková sáhodlouhá podmínka vůbec nebyla.
15.7.2016 20:56 ttt
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Beru zpět, až na ty závorky okolo celého výrazu to vypadá uzávorkované správně.
15.7.2016 21:34 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Nejsou správně. Za "if" mají být 3 levé závorky a na konci 3 pravé.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.7.2016 21:32 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je nutné tu podmínku rozdělit do více samostatných podmínek, aby se to v budoucnu dalo přečíst a pochopit. Jinak vznikne neudržovatelné monstrum.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
15.7.2016 21:43 NN
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdyz mas vice opakujicich se podminek, muzes z podminmky udelas funkci, nebo je nahradit negaci.
15.7.2016 22:16 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: javascript: vyhodnocení tří proměnných najednou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Také se to dá udělat objektově - objekt promenna1 bude obsahovat metodu, která bude vyhodnocovat, zda se její hodnota rovná jedné z těch dvou hodnot. Podmínka by se tím zjednodušila:
if (promenna1.isIn(hodnota1, hodnota2) && promenna2.isIn(hodnota1, hodnota2) && promenna3.isIn(hodnota1, hodnota2)) {
    ...
}
Zcela jistě se to dá ještě zjednodušit, ale neznám kontext, ze kterého to bylo vytrženo. Například konstanty hodnota1 a hodnota2 by mohly být již součástí objektu. Podmínka by vypadala ještě lépe:
if (promenna1.isValid() && promenna2.isValid() && promenna3.isValid()) {
    ...
}
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.