2009-08-12 13 views
1

Voici un échantillon du tableau global.heights:tableau multidimensionnel Javascript délivre

[[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], [], []] 

Ce que je dois faire est de faire un autre tableau une partie du tableau global (simple, quelque chose comme global.offset = new Array() fonctionne bien). Il doit ressembler à ceci:

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

Fondamentalement, chaque endroit est la valeur à ce jour. Comme dans global.offset [2], les trois premiers sont ajoutés, et ainsi de suite tout au long du tableau.

Mais si je tente quelque chose comme:.

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]); 
    } 
} 

Si je fais ce que je reçois une erreur non définie que global.offset est pas un objet (mais il est déjà initialisé et avec quatre tableaux à l'intérieur il

.

Je suis nouveau à JS

Merci

+0

Je vois juste global.heights jusqu'à ce point. – RiddlerDev

+0

Peu importe, je vois où c'est maintenant. – RiddlerDev

Répondre

0

comme dit IPX Ares: déclarez votre tableau en dehors de la boucle. Vérifiez également que "global.offset [i]" est instancié avant d'accéder au membre "[j]" de "global.offset [i]". Où avez-vous défini global.offset?

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

Cela semble mal:

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]); 
    } 

Voulez-vous dire k = global.heights[i].length (notez le = et le remplacement de 1 par i)?

De même, vous n'avez pas besoin d'utiliser Number() sauf si vous placez des chaînes dans les tableaux. Cela dit sans savoir où est défini global, je suis incapable de fournir plus d'aide.

0

Donc le problème est que vous définissez votre tableau en dehors de votre boucle. Avant d'essayer de définir le tableau de décalage, définissez-le comme un tableau.

Cette page fait un meilleur travail d'expliquer ce que je veux dire: link text

Questions connexes