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

...komplette Frage anzeigen

1 Antwort

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...

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

0
@Minilexikon

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)?

0
@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.

0

Was möchtest Du wissen?