| Autor | Zpráva | ||
|---|---|---|---|
| Petr Bartošek Profil * |
#1 · Zasláno: 21. 11. 2013, 16:17:05
Dobrý den,
pokud mám pole: var zelenina = ['mrkev','zelí','cibule']; lze nějakým způsobem vytvořit dodatečné pole v např. poli mrkev, do kterého bych vložil jeho barvu? Takto se mi to nepodařilo, kde je chyba? zelenina[0][0] = 'oranžová'; Děkuji. Zdraví. Petr Bartošek |
||
| Radek9 Profil |
Petr Bartošek:
To je logické. Snažíš se totiž upravovat ten string, žádné pole tam není. Buď ten prvek (string) zabalíš do dalšího pole, nebo spíše použij nějaký specifický objekt, ke kterému už jednoduše přiřadíš barvu. |
||
| Joker Profil |
#3 · Zasláno: 21. 11. 2013, 16:38:25
Jedna poznámka, možná trochu na okraj:
JS umožňuje (v moderních prohlížečích) brát řetězec i jako pole, takže když zelenina[0] = "mrkev", tak zelenina[0][0] bude "m" (první písmeno řetězce "mrkev"). Ale není možné tím způsobem řetězce měnit, proto to zelenina[0][0] = 'oranžová'; nic neudělá.
Petr Bartošek: S takovou datovou strukturou by se ale dost těžko pracovalo, ne? Jakékoliv čtení prvku by muselo začínat „Pokud prvek je pole…“ (Například: Jaký druh zeleniny je na dané pozici? Pokud ten prvek je pole, je název druhu nějaká jeho položka, jinak to je sám prvek). Možná by bylo lepší to rovnou dát do nějaké struktury? var zelenina = [{'druh' : 'mrkev'},{'druh' : 'zelí'},{'druh' : 'cibule'}];
zelenina[0].barva = "oranžová";
alert(zelenina[0].barva + " " + zelenina[0].druh); // oranžová mrkev |
||
| Petr Bartošek Profil * |
#4 · Zasláno: 21. 11. 2013, 17:56:16
Radek9:
Děkuji za odpověď, jak přesně mohu zabalit string do dalšího pole? |
||
| Radek9 Profil |
#5 · Zasláno: 21. 11. 2013, 19:52:58
Petr Bartošek:
„jak přesně mohu zabalit string do dalšího pole?“ Prostě takhle: var zelenina = [["mrkev"], ["zelí"], ["cibule"]]; function Zelenina(druh, barva) {
this.druh = druh;
this.barva = barva || "černá";
}
var zelenina = [new Zelenina("mrkev"), new Zelenina("zelí"), new Zelenina("ciblue")];
zelenina[0].barva = "bílá"; |
||
| Petr Bartošek Profil * |
#6 · Zasláno: 21. 11. 2013, 21:35:51
Radek9:
Děkuji za info. Hezký večer. |
||
|
Časová prodleva: 12 let
|
|||
0