Visualizzazione risultati 1 fino 12 di 12

Discussione: [JS] - array bidimensionale

  1. #1
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito [JS] - array bidimensionale

    Salve.
    Non so il perché (forse l'ora [spero ]), ma non riesco nemmeno a inizializzare un array bidimensionale.

    Ho fatto questo semplicissimo scritp:

    Codice HTML:
    <html>
    <head>
    <title>
    prova
    </title>
    </head>
    <body>
    <script language='javascript'>
    var array = new Array();
    var dim_x = 4;
    var dim_y = 4;
    
    alert("1");
    
    for(y=0;y<dim_y;y++)
    {
    	alert(y+2);
    	for(x=0;x<dim_x;x++)
    	{		
    		if((x==1 && y==1) || (x==1 && y==2) || (x==2 && y==1) || (x==2 && y==2))
    			array[x][y]=1;
    		else
    			array[x][y]=0;
    	}
    }
    alert("6");
    </script>
    </body>
    </html>
    Ho messo gli alert come debug, ma a quanto pare, appena cerco di inizializzare un elemento dell'array, lo script fallisce

    Infatti gli alert compaiono soltanto 1 e 2.
    invece, DOVREBBE mostrare: 1 2 3 4 5 6 {alert diversi }.

    Come mai?
    In JS c'é qualche particolarità degli array bidimensionali?

    Ho cercato, e ho fatto come dice questo sito:

    Codice HTML:
    <html>
    <head>
    <title>
    prova
    </title>
    </head>
    <body>
    <script language='javascript'>
    array = new Array();
    array[0]=new Array();
    array[1]=new Array();
    var dim_x = 4;
    var dim_y = 4;
    
    alert("1");
    
    for(y=0;y<dim_y;y++)
    {
    	alert(y+2);
    	for(x=0;x<dim_x;x++)
    	{		
    		if((x==1 && y==1) || (x==1 && y==2) || (x==2 && y==1) || (x==2 && y==2))
    			array[x][y]=1;
    		else
    			array[x][y]=0;
    	}
    }
    alert("6");
    </script>
    </body>
    </html>
    ,... ma niente

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 16-06-2009 alle ore 02.05.55

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Davvero strano, perché il codice mi pare corretto (soprattutto il secondo... meglio esplicitare che gli "array bidimensionali" in realtà sono "array di array").

    L'unico motivo che può venirmi in mente è che array (scritto in minuscolo) possa essere una parola chiave, e quindi non utilizzabile... prova a cambiare il nome.

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    Grazie, ma non funziona nemmeno così:

    Codice:
    <html>
    <head>
    <title>
    prova
    </title>
    </head>
    <body>
    <script language='javascript'>
    matrice = new Array();
    matrice[0]=new Array();
    matrice[1]=new Array();
    var dim_x = 4;
    var dim_y = 4;
    
    alert("1");
    
    for(y=0;y<dim_y;y++)
    {
    	alert(y+2);
    	for(x=0;x<dim_x;x++)
    	{		
    		if((x==1 && y==1) || (x==1 && y==2) || (x==2 && y==1) || (x==2 && y==2))
    			matrice[x][y]=1;
    		else
    			matrice[x][y]=0;
    	}
    }
    alert("6");
    </script>
    </body>
    </html>
    ...Ovvero mi appaiono i primi due alert, invece di apparirmene 6

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 16-06-2009 alle ore 09.40.41 Motivo: da tag [HTML] a tag [CODE]

  4. #4
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Il problema deriva dal fatto che crei come array matrice[0] e matrice[1] però poi tenti di usare come array anche matrice[2] e matrice[3].
    Metterei un controllo all'interno della seconda for per inizializzare come array l'elemento se questo non è un array.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    Grazie; così funziona:

    Codice HTML:
    <html>
    <head>
    <title>
    prova
    </title>
    </head>
    <body>
    <script language='javascript'>
    matrice = new Array();
    matrice[0]=new Array();
    matrice[1]=new Array();
    matrice[2]=new Array();
    matrice[3]=new Array();
    var dim_x = 4;
    var dim_y = 4;
    
    alert("1");
    
    for(y=0;y<dim_y;y++)
    {
    	alert(y+2);
    	for(x=0;x<dim_x;x++)
    	{		
    		if((x==1 && y==1) || (x==1 && y==2) || (x==2 && y==1) || (x==2 && y==2))
    			matrice[x][y]=1;
    		else
    			matrice[x][y]=0;
    	}
    }
    alert("6");
    </script>
    </body>
    </html>
    ...Ma perché JS non "supporta direttamente" gli array multidimensionali

    Grazie,
    Ciao!

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    ...Ma perché JS non "supporta direttamente" gli array multidimensionali
    Perché in Javascript non esiste l'array multidimensionale in quanto tale. Anche usando la notazione con doppio (o triplo o quadruplo) indice ogni elemento è indipendente, semplicemente viene linkato da qualcos'altro, e ogni elemento può essere qualsiasi cosa. Per questo non esite una notazione come nel C.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    Ah... pensavo che questi linguaggi ad "ALTISSIMO " livello fossero molto flessibili... Ma a quanto pare, negli array lo batte anche il C

    Ok, grazie,

    Ciao!

    p.s. scusa, ma per fare il javascript (anche il java...) non si sono ispirati al C++?
    Il C++ non li supporta??

    va be.. appunto si sono ispirati.. e non li hanno copiati

    Ciao!

  8. #8
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Guarda che è questo approccio ad essere più flessibile perché non hai bisogno di dichiarare come desideri utilizzare una variabile e oggetti come gli array hanno dimensione dinamica, per cui occupano lo spazio che serve.

    Codice HTML:
    <script language='javascript'>
    matrice = [];
    var dim_x = 4;
    var dim_y = 4;
    
    for (x=0; x<dim_x; x++) {
    	matrice[x] = [];
    	for (var y=0; y<dim_y; y++) {
    		if ((x == 1 || x == 2) && (y == 1 || y == 2)) {
    			matrice[x][y]=1;
    		} else {
    			matrice[x][y]=0;
    		}
    	}
    }
    </script>


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    grazie.
    Si può fare una cosa del genere?

    Codice HTML:
    array = {0,1,0,1}{0,0,0,0}{1,0,0,1}{1,1,1,0}
    ...naturalmente non funziona...

    Come si potrebbe fare?

    Io perché ho fatto così:

    Codice HTML:
    array = new Array();
    array[i++] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0);
    array[i++] = new Array(0,1,1,1,0,1,1,0,1,1,1,1,0);
    array[i++] = new Array(0,1,0,1,0,1,0,0,0,0,0,1,0);
    array[i++] = new Array(0,1,0,1,1,1,1,0,1,1,1,1,0);
    array[i++] = new Array(0,1,1,1,0,1,1,1,1,0,0,0,0);
    array[i++] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0);
    ...però in questo modo, la matrice è vista "girata di 90°", e è più complicato poi compilarla con php...

    Quindi, si può usare il modo che ti ho detto?

    Non so: tipo:

    matrice = [];
    matrice = {1,0}{0,1}{1,0};

    ...ma non funziona...

    Grazie,
    Ciao!
    Ultima modifica di alemoppo : 16-06-2009 alle ore 20.23.46

  10. #10
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Studiati JSON. Il tuo primo esempio sarebbe semplicemente questo:
    Codice:
    mioarray = [
      [0,1,0,1],
      [0,0,0,0],
      [1,0,0,1],
      [1,1,1,0]
    ];


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,753

    Predefinito

    Ho risolto lasciando il codice scritto nel IX post, anche se viene sfasato di 90°, perché provando, anche la soluzione del post X viene sfasata...

    p.s. :

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Studiati JSON
    Perché ?
    ...Ma a quanto pare prima bosigna conoscere AJAX

    Ciao!

  12. #12
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    ...Ma a quanto pare prima bosigna conoscere AJAX
    Non è vero. JSON è un formato Javascript per la rappresentazione compatta dei dati. AJAX invece è un possibile uso delle chiamate asincrone di Javascript e in cui si rappresentano i dati in XML.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •