
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: []
}
]
}
]
}
]
}
];
Díky za rady, vidím, že to tu žije...
No a chceš poradit, nebo chceš aby to někdo udělal za tebe?
Vidíš tady snad nějakou radu?
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.
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.