inizializzare array multidimensionali

Noè Murr

Nuovo Utente
11 Apr 2015
9
0
1
buongiorno a tutti.

sto cercando di creare una matrice r x c in js. per farlo ho utilizzato il seguente metodo:

Codice:
var tabella = new Array(r);

for (var i = 0; i<r; i++){
     tabella[i] = new Array();
}

ora la tabella si crea ed inizializza tutte le caselle come "undefined".
il problema è che quando tento di modificare i valori con il seguente ciclo:

Codice:
for (var i = 0; i < n; i++) {
      var x = 0;
      for (var j = 0; j < c; j++) {
           x = (i * c) + j;
           tabella[i + 1][j] = testo[x];
     }
}

ad un certo punto lo script si blocca e la console mi passa l'errore:

Uncaught TypeError: Cannot set property '0' of undefined

qualcuno di voi sa dirmi per quale motivo mi passa questo errore? e come risolverlo?

grazie mille a tutti quanti in anticipo.
 
Ciao, ma i valori di r e n ?
cmq secondo me sbagli a definire la chiave
Codice:
tabella[i + 1]
perchè hai messo + 1 ?
 
Allora il valore n è da sostituire con r, nello script originale era n e non l'ho notato mentre lo copiavo,
rappresenta il numero delle righe mentre c rappresenta il numero delle colonne.

Il +1 l'ho aggiunto perché la prima riga della matrice deve essere inizializzata in seguito quindi devo partire dal l'indice 1 e via dicendo.


Inviato dal mio iPhone utilizzando Tapatalk
 
il ciclo però finisce con r e r + 1 nel tuo array non esiste, toglilo vedrai che funziona.
al massimo metti una condizione
Codice:
if(i > 0) {
  codice
 
Grazie mille, si il problema era che finivo in una riga che non esisteva nel mio array.
ho risolto il ciclo inizializzando la variabile i al valore 1.

grazie mille per l'aiuto.
 

Discussioni simili