Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jirka 14. 02. 2015, 09:55:11

Název: Javascript pole proměných
Přispěvatel: Jirka 14. 02. 2015, 09:55:11
Ahoj Vespolek,

prosím o pomoc jak pomocí javascriptu z proměné obsahující pole proměných dostat určité hodnoty.

Mám proměnou s definicí viz níže

barva: [{"name":"Cyan","type":"standart","previews":"CMYK"}, {"name":"Magenta","type":"standart","previews":"CMYK"}, {"name":"Yellow","type":"standart","previews":"CMYK"}, {"name":"Black","type":"standart","previews":"CMYK"},{"name":"PANTONE 100C","type":"process","previews":"CMYK"}]

pomocí javascriptu bych potřeboval získat pole z atributů "name",

výsledek by měl vypadt takto:

barvy_vyber : { "barva1":"Cyan", "barva2":"Magenta", ……. }

Předem moc díky za pomoc, učím se a nad tímto jsem už strávil moře času a nevím jak na to přijít.

Jirka
Název: Re:Javascript pole proměných
Přispěvatel: FrostyX 14. 02. 2015, 10:31:48
Ahoj, javascript neznám, ale všude jinde bych hledal něco jako 'array_map'. Projde to daný seznam a na každý prvek aplikuje funkci kterou řekneš. Tvoje funkce bude pro každý prvek, což je u tebe

Kód: [Vybrat]
{"name":"Cyan","type":"standart","previews":"CMYK"}
jen vracet prvek["name"].
Název: Re:Javascript pole proměných
Přispěvatel: FrostyX 14. 02. 2015, 10:32:29
Sakra, vypadl mi link - http://www.tutorialspoint.com/javascript/array_map.htm (http://www.tutorialspoint.com/javascript/array_map.htm)
Název: Re:Javascript pole proměných
Přispěvatel: Vertex 14. 02. 2015, 11:53:20
barva = [{"name":"Cyan","type":"standart","previews":"CMYK"}, {"name":"Magenta","type":"standart","previews":"CMYK"}, {"name":"Yellow","type":"standart","previews":"CMYK"}, {"name":"Black","type":"standart","previews":"CMYK"},{"name":"PANTONE 100C","type":"process","previews":"CMYK"}]
vyber = {};
(function () {
    var counter = 1;
    barva.forEach(function(e) { var tmp = e.name; var key = "barva" + counter++; vyber[key] = tmp; });
})(); //aby sa counter nedostal do globalneho scope tak to obalime do anonymnej funkcie ktoru hned aj zavolame
Název: Re:Javascript pole proměných
Přispěvatel: Ondra121 14. 02. 2015, 11:54:12
Můžeš třeba taky využít nějakou knihovnu, třeba underscore http://underscorejs.org/#where (http://underscorejs.org/#where)
Název: Re:Javascript pole proměných
Přispěvatel: Ondra121 14. 02. 2015, 11:58:26
oprava: http://underscorejs.org/#pluck
Název: Re:Javascript pole proměných
Přispěvatel: Lucas 14. 02. 2015, 13:04:07
Citace
Mám proměnou s definicí viz níže

barva: [{"name":"Cyan","type":"standart","previews":"CMYK"}, {"name":"Magenta","type":"standart","previews":"CMYK"}, {"name":"Yellow","type":"standart","previews":"CMYK"}, {"name":"Black","type":"standart","previews":"CMYK"},{"name":"PANTONE 100C","type":"process","previews":"CMYK"}]

Nic ve zlým, ale takhle v sobotu po ránu se mi trochu zvedl kufr při pohledu na ten prasácký zápis. Zkus to příště radši nějak takhle:

Kód: [Vybrat]
var barva = [
    {
        "name": "Cyan",
        "type": "standart",
        "previews": "CMYK"
    },
    {
        "name": "Magenta",
        "type": "standart",
        "previews": "CMYK"
    },
    {
        "name": "Yellow",
        "type": "standart",
        "previews": "CMYK"
    },
    {
        "name": "Black",
        "type": "standart",
        "previews": "CMYK"
    },
    {
        "name": "PANTONE 100C",
        "type": "process",
        "previews": "CMYK"
    }
];

Citace
pomocí javascriptu bych potřeboval získat pole z atributů "name",

výsledek by měl vypadt takto:

barvy_vyber : { "barva1":"Cyan", "barva2":"Magenta", ……. }

Zřejmě si pleteš pojmy objekt(hashmap, plain object, ...) a pole. Tohle totiž není pole. Ale dobrá:

Kód: [Vybrat]
result = {};
for (var id in barva) result['barva' + (+id + 1)] = barva[id].name;

No a poslední připomínka - nemíchej při psaní kódu dohromady několik světových jazyků, takhle tě nebude mít nikdo rád.
Název: Re:Javascript pole proměných
Přispěvatel: hawran.nepřihlášený 14. 02. 2015, 15:50:19
...
No a poslední připomínka - nemíchej při psaní kódu dohromady několik světových jazyků, takhle tě nebude mít nikdo rád.

+1

http://pravopisne.cz/2010/10/standard-%C3%97-standart/
 ;)

Ale na druhou stranu, je to kůl ...