Risultati da 1 a 9 di 9

Discussione: Aiuto urgente array Javascript

  1. #1
    simo! è offline Utente del Forum
    Data Registrazione
    Mar 2006
    Messaggi
    19

    Aiuto urgente array Javascript

    Ho un problema con gli Array javascript.

    In realtà l' "array" è una matrice 15x2. La mia necessità è quella di eliminare l'ultimo elemento oppure (ancor meglio) un elemento con un determinato indice di questa matrice.

    Come si può eliminare un elemento dalla matrice?

    Vi spiego con un esempio:
    Ho questa matrice 4x2:
    A B
    B C
    C A
    A D
    Ad un certo punto ho la necessità di eliminare una coppia random dalla matrice (ad esempio B C).
    La soluzione che uso fin ora è: sposto verso l'alto di 1 tutti gli elementi successivi a B C , e considero la matrice di dimensioni 3x2 . Ma in realtà (essendo la matrice nata come 4x2) viene mantenuto in memoria un ultimo elemento in fondo alla matrice.

    Come posso eliminarlo definitivamente?
    Il mio problema è che non posso usare la funzione Array.remove(index) perchè ho una matrice da manipolare (quindi gli indici sarebbero 2), e non un array.

  2. #2
    L'avatar di lukeonweb
    lukeonweb è offline Forumista DOC
    Data Registrazione
    Mar 2003
    Località
    Napoli
    Messaggi
    5,200
    Simona, come crei l'array? Posta il codice...
    Luca Ruggiero
    Resp. didattico www.mrwcorsi.it

  3. #3
    simo! è offline Utente del Forum
    Data Registrazione
    Mar 2006
    Messaggi
    19
    Uso una funzione che ho preso dalla rete:

    Codice:
    function TO_array() { 
    
    var $dime = arguments.length;
    var $elem = new Array($dime);
    var TO_temp;
    var TO_str = "";
      
      for (var TO_i = 1; TO_i < $dime; TO_i++)
           if (isNaN($elem[TO_i] = parseInt(arguments[TO_i - 1],10))) {
               alert("La funzione TO_array richiede valori numerici");
               $dime = 0;
           }
    
      do {
               TO_temp = "";
                     for ($elem[--TO_i]; $elem[TO_i] > 1; --$elem[TO_i])
                          TO_temp += "new Array(" + TO_str + "),";
               TO_temp += "new Array(" + TO_str + ")";
              
        TO_str = TO_temp;
     
      } while(--$dime > 1 && 0 != TO_i);
    
        TO_str = "new Array(" + TO_str + ")";
    
    return eval(TO_str);
    
    } // Fine funzione TO_array
    Inizializzo la matrice con tutte le possibili coppie dell'array di "elementi" (l'array è di 6 elementi e le possibili coppie sono 15):

    Codice:
    function inizializzaMatriceCoppie(elementi){
    	var matrice = TO_array(15,2);
                 var pos = 0;
    	var riga = 0;
    		
    	for (i = pos; i < 5; i++)
    	{
    		//prendo 1 elemento
    		for (j = i+1; j < 6; j++)
    		{
    			//prendo un elemento con indice successivo nell'array
    			matrice[riga][0] = elementi[i];
    			matrice[riga][1] = elementi[j];
    			
    			riga++;		
    		}
    		pos++;	
    	}	
    	return matrice;
    }
    Per accedere alla matrice uso i due indici, così ad esempio:
    matrice[0][1]
    Ultima modifica di simo!; 04-04-2006 alle 11:39

  4. #4
    L'avatar di lukeonweb
    lukeonweb è offline Forumista DOC
    Data Registrazione
    Mar 2003
    Località
    Napoli
    Messaggi
    5,200
    In sostanza crea un array bidimensionale che in Javascript è molto difficile da gestire... Scusami se salto di palo in frasca: l'esigenza finale qual'è? Allo strumento (array o altro) pensiamo dopo...
    Luca Ruggiero
    Resp. didattico www.mrwcorsi.it

  5. #5
    simo! è offline Utente del Forum
    Data Registrazione
    Mar 2006
    Messaggi
    19
    Spero di riuscirmi a spiegare con parole povere:

    questa matrice è inizializzata con tutte le possibili coppie di elementi.
    Faccio un esempio semplice: se gli "elementi" sono A B C , inizializzerò una matrice 3x2 contenente queste coppie:
    A B
    A C
    B C
    (Nel codice la matrice è 15x2 perchè l'array "elementi" è di dimensione 6 e non 3 come nel precedente esempio).
    Il risultato finale deve essere una matrice "randomizzata verticalmente", cioè devo avere una matrice in cui le coppie vengano ordinate (in modo random) così, ad esempio:
    A C
    B C
    A B

    Per fare questo uso una nuova matrice in cui inserisco sequenzialmente la coppia di indici [num_random][0] e [num_random][1].
    Seguendo l'esempio precedente: il primo numero random è 1, perciò inserisco in matriceFinale[0][0] e [0][1] la coppia [1][0],[1][1] (quindi A C va in prima posizione) e così via.
    Il problema sta nel fatto che devo "eliminare" dalla matrice iniziale la coppia [1][0],[1][1], e considerare solo gli elementi (A B, B C) per la prossima "estrazione random".

    Se non hai capito provo a rispiegarlo, comunque in sostanza quello che devo fare è cambiare l'ordine alle coppie della matrice ("scambiandole di riga"). Il problema che ho è quello di eliminare ogni volta l'elemento dalla matrice iniziale.
    Ultima modifica di simo!; 04-04-2006 alle 11:55

  6. #6
    L'avatar di lukeonweb
    lukeonweb è offline Forumista DOC
    Data Registrazione
    Mar 2003
    Località
    Napoli
    Messaggi
    5,200
    Simone il discorso è chiaro, solo che credo di non esserlo stato io

    Quella che hai descritto, in un certo senso, è la soluzione... io intendevo dire qual'è lesigenza, il problema, chiaro?

    Dunque... in ogni caso un consiglio a prescindere:

    var elementi = new Array();
    elementi[0] = "A#A";
    elementi[1] = "A#B";
    elementi[2] = "A#C";

    su elementi[N] fai lo split degli elementi contenuti per il carattere #

    vedi se può andare...
    Luca Ruggiero
    Resp. didattico www.mrwcorsi.it

  7. #7
    simo! è offline Utente del Forum
    Data Registrazione
    Mar 2006
    Messaggi
    19
    Sono riuscita a risolvere usando semplicemente la funzione splice degli Array!!!!

    Problema risolto !

    Grazie lo stesso per la disponibilità!

  8. #8
    L'avatar di lukeonweb
    lukeonweb è offline Forumista DOC
    Data Registrazione
    Mar 2003
    Località
    Napoli
    Messaggi
    5,200
    ma la si figuri
    Luca Ruggiero
    Resp. didattico www.mrwcorsi.it

  9. #9
    L'avatar di daviduccio
    daviduccio è offline Moderatore
    Data Registrazione
    Aug 2004
    Località
    Sicilia
    Messaggi
    1,121
    Una domanda-consiglio:

    se si metteva tutto in una variabile stringa e si modellava di conseguenza?
    Computer Communication
    Computer Communication
    Computercommunication
    computerco
    davide salonia

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •