Frage von Minilexikon, 20

Wie kann man am einfachsten rückwärts ein verschachteltes Objekt aufbauen?

Hi,

ich ziehe mir für ein Script aus einer API Daten (Kategorienamen zu einer Seite). Daraufhin kann ich durch einen erneuten Request die Oberkategorie der Kategorie ermitteln und so weiter. Damit ich damit Arbeiten (=Breadcrumbs erstellen) kann, muss ich diese aber anders herum in einem Objekt speichern.

Wie geht sowas am einfachsten?

MfG

Antwort
von sarahj, 20

Du solltest das Problem konkreter ausführen. Was heist "anders herum" und wie sieht das Objekt aus, in das gespeichert werden soll. Brauchst Du die eine Baumartige Struktur, mit Referenzen von Oberkategorien zu Kindern oder umgekehrt? Für mich sieht das nach einem relativ einfachen rekursiven Algorithmus aus...

Kommentar von Minilexikon ,

Das Ganze mache ich über die MediaWiki-API. Die Funktion verschachtelt sich so lange in sich selbst, bis sie in der Oberkategorie angekommen ist.

Genau. Das soll eine baumartige Struktur werden. Ich bekomme nun immer die Referenz zur Elternkategorie und das soll am Ende umgekehrt aussehen, also dass ich von der Urgroßelternkategorie immer eine Referenz zur nächsten Kindkategorie habe.

Am Ende soll das dann ungefähr so aussehen:

categories = {
    "0": {
        name: "Wiki",
        0 : {
            name: "Inhalt"
            0: {
                name: "Charaktere",
                0: {
                    name: "Hauptcharaktere",
                    0: {
                        name: "Hauptcharakter 1"
                }
                    0: {
                        name: "Hauptcharakter 2"
                },
            },
            1: {
                name: "Nebencharaktere 1",                     0: {
                    name: "Nebencharakter 1"                   },
                1: {
                    name: "Nebencharakter 2"                   }
            }
        },
        1: {
            name: "Vorlagen",
            0: { ... }
        },
        2: {
            name: "Bilder",
            0: { ... }
        }
    }
}

Allerdings bekomme ich quasi erst Nebencharakter 1, dann Nebencharaktere, dann Charaktere, dann Inhalt und erst dann Wiki. Und nachher will ich bei Wiki anfangen, das wieder auszugeben oder sonst wie damit arbeiten.

Wiki > Inhalt > Charaktere > Nebencharaktere > Nebencharakter 1

Kommentar von sarahj ,

Du beginnst also z.B. mit "Nebencharacter 1" und kannst jeweils dazu den parent, sowie dessen Kinder kriegen.

Brauchst Du am Ende den gesamten Baum (wie oben), oder nur die Kette hinauf wie in "Wiki"->"Inhalt"->...->"Nebencharacter 1" ?

(i.e. ist es notwendig auch "Nebencharacter 2", "Hauptcharactere" usw. zu holen)?

Kommentar von sarahj ,

so wie Du es oben gezeichnet hast (insbes. mit den "...") sieht es aus, als wolltest Du immer den ganzen Baum holen. Dann musst Du doch einfach nach oben navigieren und dann alle Kinder rekursiv holen. Falls Du nicht alles brauchst hast Du den Pfad schon, wenn Du oben angelangt bist.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten