• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Array verschachteln

musclebreast

Mitglied
hallo,

ich habe mal ne frage. wie tief kann man arrays eigentlich verschachteln? gibt es ein limit bzw. ist so eine array möglich: testArray[0][1][3]

LG,

Lara
 
Bei JavaScript-Arrays wäre ich vorsichtig mit der Tiefe. Meist mache ich das dann über Array-Objekt-Verschachtelungen, Array in Array führte immer zu irgendeinem Problem beim Verarbeiten dann.

Falls Du eine andere Sprache meinst, könnte es dort natürlich wieder anders sein ;) Bei PHP gibt es imho einen Parameter der die Tiefe auf irgendetwas begrenzt, aber ein sehr hoher Wert.
 
hallo,

danke für die antworten..dass ich verschachteln kann rettet mir den tag.:) nur noch eine frage kann in nen array auf der zweiten ebene einfach pushen?

testarray[0] = new Array;
testarray[0].push('test');

irgendwie klappt es nicht ganz.klar kann ich für jedes Array einen zähler einrichten, aber da würde der aufwand steigen.:)

lg
 
Der IE bis einschließlich Version 8 hat meines Wissens ein Problem mit mehrdimensionalen Arrays wenn diese mehr als 2 Ebenen umfassen. Aus dem Grund habe ich mich immer für ein Array-Objekt-Konstrukt entschieden. Aktuelle Browser haben das Problem natürlich nicht (mehr).
 
Hast du ein konrkretes Beispiel? Oo

Was dein Problem angeht, wäre es interessant, zu wissen, wie du das Array aufbaust und wie du die Daten bekommst.

PHP:
var a = [];
var x, y, z, xa, ya;
for (x = 0; x < 10; x++) {
    xa = [];
    for (y = 0; y < 10; y++) {
        ya = [];
        for (z = 0; z < 10; z++) {
            ya.push(x * y * z);
        }
        xa.push(ya);
    }
    a.push(xa);
}

Das ist wohl die beste Art und Weise, sowas zu machen. Da braucht man sich nicht um den aktuellen Index zu kümmern.
 
Hallo,

danke für deine Antwort, aber es ist nicht ganz wie ich es suche. OK, zu meinem Bespiel:

Ich habe eine Datei mit 2 spalten Typ und Typ1....diese wird Zeilenweise eingelesen...hier der kurze code für jede einzelne Zeile:


Typ.......Typ1

honda....civic
honda...prelude
bmw....3er

ich gehe jetzt zeile für zeile durch und wenn der typ sich vorm vorherigen unterscheidet dann pushe ich ihn in mein array..so bekomme ich eine liste mit allen typen. woran es hängt. gleichzeitig muss ich noch den typ1 als weiteres array hineinpushen.

Code:
var typearray = new Array();

if (tYPe==lasttype) {

}

if (tYPe!=lasttype) {

   typearray.push(type);
   typearray = new Array();
   typearray[0].push(type1);

}

ist jetzt nu ein kurzer bespiel aber ich muss in zum typ alle alle werte vom typ1 in ein array haben.

es würde als so aussehen

typearray (honda) in diesem ein weiteres array mit( civic, prelude)

wie gesagt mit zählvariablen kann ichs schnell machen. aber evtl bauche ich 7 ebenen und da wäre ein genereller ansatz besser wo ich nur pushe...
ich hoffe es war ein wenig verständlich:)

lg
 
hallo,

kann mir denn wirklich keiner einen tipp geben wie ich in meinem fall so eine array liste mit push aufbaue wenn ich 2 spalten habe?

lg

lara
 
Häh? Entweder ich verstehe das jetzt nicht wirklich oder aber dafür eignen sich Arrays gar nicht.

Warum machst du das nicht mit Objekten?

PHP:
var autos = {};
while (true) {
    // hier bekommst du marke, und modell
    if (!autos.hasOwnProperty(marke)) {
        autos[marke] = [];
    }
    autos[marke].push(modell);
}

Am Ende hast du dann ein Objekt, das so aussehen würde:
PHP:
{
    "BMW": ["X1", "M5", "320d", "116d"],
    "Audi": ["Q7", "A3"],
    "Porsche": ["Carrera", "Cayenne", "911"],
    "Lada": ["110", "Priora", "2101"]
}
 
Hallo Asterix,

den Aufbau hast du richtig durchschaut. Das Ergebnis ist was ich möchte. Vielleicht noch ne Frage. Du hast nen Objekt ür die Marke und darin ein Array abgelegt. Würde ich jetzt noc eine dritte Spalte bzw. Ebene hinzufügen wollen, hätte ich aber wieder dasselbe Problem nicht?

Besser gesagt, der Push

array[1].push('test');

Sowas geht nur mit Objekten nicht?

Es scheint so als ob ich doch mit Zählvariablen arbeiten muss und die Arrays so befuelle:

array[counter][counter1] = 'test';

ne Lösung mit Push wäre halt nur eleganter gewesen....
 
Zurück
Oben