
Jaky napsat script v JS který vygeneruje takový objekt
Ahoj chlapy, stáhl jsem si z webu free API která vykresluje elementy které se získávají z objektu data (viz níže). Problém je v tom, že pokud chci přidat +/- 100 elementů do tohoto objektu i daleko hlouběji vnořených tak to spíš umřu, už je to nepřehledný teď. Neexistuje nějaký pomocník kterým by to šlo lehce vygenerovat z nějakého přehledného formátu? Velmi děkuji za pomoc!
var data = [
{
description: "Element ROOT",
children: [
{
description: "Element 1",
children: [
{
description: "Element 1.1",
children: []
},
{
description: "Element 1.2",
children: [
{
description: "Element 1.2.1",
children: []
}
]
}
]
},
{
description: "Element 2",
children: [
{
description: "Element 2.1 with tooltip",
tooltip: "Hey I'm a tooltip",
children: []
},
{
description: "Element 2.2",
children: []
}
]
},
{
description: "Element 3",
children: [
{
description: "Element 3.1",
children: []
},
{
description: "Element 3.2",
children: []
},
{
description: "Element 3.3",
children: [
{
description: "Element 3.3.1",
children: []
},
{
description: "Element 3.3.2",
children: []
}
]
}
]
}
]
}
];
Neví, zda ti dobře rozumím. Chceš něco jako textovej soubor s daleko jednodušším zápisem a pak ho převést na výše uvedenej objekt? Něco jako:
Nebo jde o něco jinýho?
Ano ano, přesně tak, tohle je absolutně pro amatéra nepřehledné.
Díky za rady, vidím, že to tu žije...
No a chceš poradit, nebo chceš aby to někdo udělal za tebe?
... a nebo chce třeba jen kritizovat. Kolika lidem tady poradil on?
Vidíš tady snad nějakou radu?
Vidíš tady snad někde záruku, že každý dotaz bude vyřešen?
1. Procházej řádek po řádku.
2. Pokud se odsazení nemění, přidávej prvky do současné kolekce.
3. Pokud se odsazení zvýší, ulož si současnou kolekci do zásobníku a vytvoř novou, do které přidáš současný prvek a případné další se stejným odsazením.
4. Pokud se odsazení sníží, vyjmi kolekci ze zásobníku a ukládej prvky do ní.
Tak ve finále to stejně vyšlo nastejno.
Aha, takže chceš, aby to za tebe někdo udělal. Pak tomu ale neříkej rada.
Tak ono je to těžký, netuším co je to prvek, současná kolekce, zásobník atd.
Vytvořené narychlo, takže určitě ne ideální:
Díky moc aspoň za to, tohle bych neudělal ani za týden.
To, že to generuje správně jen 4 úrovně je záměr nebo ne?
Je fakt že na víc než 4 úrovně jsem to nezkoušel, ale na první pohled nevidím, proč by to nemělo fungovat na libovolný počet.
Tak třeba taková struktura
Vygeneruje tohle / Jako by se to nedokázalo vrátit zpět o více jak jednu úroveň.
Dal jsem to na pastebin, překročen asi znakový limit.
https://pastebin.com/cg5tRCKQ
Díky, že se na to mrkneš
Velmi moc děkuji za pomoc. Vypadá to, že se to teď generuje správně.
Ještě jedna technická, jak můžu docílit toho, aby ten výstup byl bez první a poslední hranaté závorky?
Děkuji, výpis funguje super.
Je prosím tě rozdíl mezi tím, že vypíšu
console.log(json.substr(1, json.length - 2));
a nebo to uložím do proměnné?
treeData = json.substr(1, json.length - 2);
Pokud to uložím do proměnní a vypíšu obsah proměnné,
console.log(treeData);
tak je výsledek totožný jako tohle
console.log(json.substr(1, json.length - 2));
a přesto to nefunguje, Pokud to zkopíruji z konzole přímo do kódu, tak to funguje.
Pokud to chceš mít v proměnné, tak můžeš použít přímo result a nepřevádět to na string.
Ano pro první případ to funguje jak píšeš, tedy při použití hranatých závorek
Našel jsem na webu lepší vykreslování elementů - který má úplně stejnou strukturu, jen to není obaleno v těch hranatých závorkách ale ve složených závorkách, a to už použitím proměnné result nejde.
To ale bude fungoval jenom s jedním elementem na nejvyšší úrovni.
Nerozumím co tím myslíš.
Tohle nebude fungovat, protože tam jsou dva "aaa" prvky.
To nevadí, tohle funguje
V tom případě stačí:
Tebe je tady vážně škoda .... Díky moc.