Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563

    Mischiare due array con la stessa modalità

    Salve a tutti, arrivo al punto:

    Io ho due array:

    mioArr=[1,2,3,4,5];
    tuoArr=[A,B,C,D,E];

    ora vorrei mischiare casualmente (o magari anche non casualmente) i due array ma con la stessa modalità, in modo da mantenere i legami tra i due array.

    Per es. vorrei mischiarli in modo da poter ottenere questo risultato:

    mioArr=[3,1,4,5,2];
    tuoArr=[C,A,D,E,B];

    il 3 corrisponde sempre con la C, l'1 con la A, il 4 con la D etc.

    Ci sbatto la testa da un bel po' ma non ho risolto... sapete consigliarmi?
    Se non è chiaro ditemelo che provo a riscriverlo...

    Grazie!

  2. #2
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    UP!

  3. #3
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    La prima cosa che mi viene in mente è di creare un array di oggetti con due proprietà (se i due array sono strettamente legati è abbastanza normale), e poi ordinare l'array in base ad una proprietà:

    codice:
    var mioArray:Array = [{l:"C", n:3},{l:"A", n:1},{l:"D", n:4},{l:"E", n:5},{l:"B", n:2}];
    mioArray.sortOn( "n", Array.NUMERIC );
    mioArray.sortOn( "n", Array.NUMERIC | Array.DESCENDING );
    mioArray.sortOn( "l" );
    In questo modo le coppie saranno sempre uguali..

  4. #4
    perchè non fai 1 array bidimensionale?

    o devono proprio essere separati?

    ops...arrivato tardi...

  5. #5
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    Grazie a entrambi...
    Negatyve, non capisco perfettamente il tuo codice, infatti non riesco neanche a stampare i dati dell'array.

    se al tuo codice aggiungo alla fine un

    trace(mioArray)

    il risultato è [object Object]

    sbaglio qualcosa?

  6. #6
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    Per curiosità...
    con un bel po' di fantasia e qualche script trovato qua e là ho risolto così, grezzo e ridondante ma per ora efficace

    // funzione per mischiare gli elementi di un array
    Array.prototype.mix = function() {
    var lung = this.length;
    for (var i = 0; i < lung; i++) {
    var zNum = Math.floor(Math.random() * lung);
    var temp = this[i];
    this[i] = this[zNum];
    this[zNum] = temp;
    }
    };


    succ = Array();
    preparole = Array('A','B','C','D');
    prearee = Array('area1','area2','area3','area4');
    lung = (preparole.length);

    for (k=0; k<lung; k++) {
    succ.push(k)
    }
    succ.mix()

    parole= Array();
    aree= Array();

    for (k=0; k<lung; k++) {
    pos=succ[k];
    parole.push(preparole[pos])
    aree.push(prearee[pos])
    }
    trace(aree)
    trace(parole)


    Grazie!

  7. #7
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Originariamente inviato da knulp
    Grazie a entrambi...
    Negatyve, non capisco perfettamente il tuo codice, infatti non riesco neanche a stampare i dati dell'array.

    se al tuo codice aggiungo alla fine un

    trace(mioArray)

    il risultato è [object Object]

    sbaglio qualcosa?
    codice:
    function stampaArray()
    {
    	trace( "=====================================" );
    	for( var i:Number = 0; i < mioArray.length; i++ )
    	{
    		trace( mioArray[i].n + "=>" + mioArray[i].l );
    	}
    }
    var mioArray:Array = [{l:"C", n:3},{l:"A", n:1},{l:"D", n:4},{l:"E", n:5},{l:"B", n:2}];
    stampaArray();
    mioArray.sortOn( "n", Array.NUMERIC );
    stampaArray();
    mioArray.sortOn( "n", Array.NUMERIC | Array.DESCENDING );
    stampaArray();
    mioArray.sortOn( "l" );
    stampaArray();

  8. #8
    Utente di HTML.it L'avatar di knulp
    Registrato dal
    Feb 2002
    Messaggi
    563
    Grazie Negatyve, è perfetto, ovviamente...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.