2009-08-12 4 views
1

Hier ist eine Probe des global.heights Array:Javascript mehrdimensionales Array gibt

[[190, 76, 209, 57, 114, 171, 76, 513, 209, 171, 76, 152, 76, 76, 190, 114, 95, 76, 76, 95, 57, 133, 114], [152, 76, 133, 38, 95, 133, 76, 342, 190, 114, 57, 152, 76, 57, 133, 76, 76, 76, 57, 76, 57, 76, 76], [], []] 

Was ich tun muss, ist eine andere Anordnung ein Teil des globalen Array zu machen (einfach, so etwas wie global.offset = new Array() funktioniert gut). Es braucht so etwas wie folgt aussehen:

[[190, 266, 475, ...], [...], [], []] 

Grundsätzlich jeder Stelle der Wert ist so weit. Wie in global.offset [2] sind die ersten drei hinzugefügt und so weiter im Array.

Aber wenn ich versuche, so etwas wie:.

for(i = 0, e < global.heights.length; i < e; i++) { 
    for(j = 0, k < global.heights[1].length; j < k; j++) { 
     global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]); 
    } 
} 

Wenn ich tun, dass ich einen undefinierten Fehler erhalten, dass global.offset kein Objekt ist (aber es ist bereits initialisiert und mit vier Arrays im Inneren

.

ich bin neu in JS

Dank

+0

wo haben Sie global.offset definiert? Ich sehe nur globale Höhen bis zu diesem Punkt. – RiddlerDev

+0

vergiss ich, wo es jetzt ist. – RiddlerDev

Antwort

0

als IPX Ares sagt: Ihr Array außerhalb der Schleife deklarieren. Stellen Sie außerdem sicher, dass "global.offset [i]" instanziiert wird, bevor auf das Element "[j]" von "global.offset [i]" zugegriffen wird.

global.offset = global.offset || []; // <- See this! 
for(i = 0, e < global.heights.length; i < e; i++) { 
    for(j = 0, k = global.heights[1].length; j < k; j++) { // I think you mean "k = global.heights[1].length"? 
     global.offset[i] = global.offset[i] || []; // <- and this! 
     global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]); 
    } 
} 
0

Das sieht falsch:

for(j = 0, k < global.heights[1].length; j < k; j++) { 
     global.offset[i][j] = Number(global.offset[i][j - 1]) + Number(global.heights[i][j]); 
    } 

Meinst du k = global.heights[i].length (beachten Sie die = und den Ersatz von 1 mit i)?

Sie müssen auch Number() nur verwenden, wenn Sie Strings in die Arrays einfügen.

Das sagte, ohne zu wissen, wo global definiert ist, kann ich nicht mehr Hilfe bieten.

0

Das Problem ist also, dass Sie Ihr Array außerhalb Ihrer Schleife definieren. Bevor Sie versuchen, das Offset-Array festzulegen, definieren Sie es als Array.

Diese Seite hat einen besseren Job zu erklären, was ich meine: link text