Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    "sottrazione" di arrays...

    Ho due arrays...

    A=new Array (A,B,C,D,E,F,G,H,I;
    B=new Array (A,D,B,E,C);

    Vorrei averne un terzo C risultante dalla seguente operazione:

    A-B (ovvero avente solo gli elementi nn comuni ai due arrays indipendentemente dalla posizione dei componenti di quest'ultimi)

    quindi dovrebbe risultare C=A-B=new Array(F,G,H,I);

    Quale codice me lo puo' generare?

    Grazie &

  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Al volo mi viene così:

    codice:
    var PRIMO_ARRAY   = ["A", "B", "F", "C", "H"];
    var SECONDO_ARRAY = ["F", "H", "A", "I", "D"];
    
    function sottrai(a, b)
    {
    	var c = new Array(), i, j, found;
    	for(i = 0; i < a.length; i++)
    	{
    		found = false;
    		for(j = b.length - 1; j > -1; j--)
    		{
    			if(a[i] == b[j]){
    				b.splice(j, 1);
    				found = true;
    				break;
    			}
    		}
    		if(!found)c.push(a[i]);
    	}
    	return a.concat(b);
    }
    trace(sottrai(PRIMO_ARRAY, SECONDO_ARRAY));

  3. #3
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    ok provo




  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    purtroppo non è proprio quello che andavo cercando... :|

    Originariamente inviato da negatyve
    Al volo mi viene così:

    codice:
    var PRIMO_ARRAY   = ["A", "B", "F", "C", "H"];
    var SECONDO_ARRAY = ["F", "H", "A", "I", "D"];
    
    function sottrai(a, b)
    {
    	var c = new Array(), i, j, found;
    	for(i = 0; i < a.length; i++)
    	{
    		found = false;
    		for(j = b.length - 1; j > -1; j--)
    		{
    			if(a[i] == b[j]){
    				b.splice(j, 1);
    				found = true;
    				break;
    			}
    		}
    		if(!found)c.push(a[i]);
    	}
    	return a.concat(b);
    }
    trace(sottrai(PRIMO_ARRAY, SECONDO_ARRAY));

    Purtroppo con questo sistema ottengo un ARRAY composto da elementi univoci ma appartenenti ad entrambi gli array analizzati...
    Io vorrei invece visualizzare solo quelli del primo meno quelli uguali al secondo..

    Sempre seguendo l'esempio io vorrei ottenere:

    A-B-C

    ovvero togliere gli elementi comuni: F e H

    Alla luce di queste novità è possibile modificare il tuo action script di conseguenza?

    GRAZIE

  5. #5
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Ti ho copincollato la prova sbagliata. Cambia il
    codice:
    return a.concat(b);
    in
    codice:
    return b.concat(c);

  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    grazie infinite

    stasera provo!


  7. #7
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    questa volta ottengo...

    I,D,A,B,F,C,H




    DOVREI OTTENERE INVECE SOLO A,B,C



    :master:



  8. #8
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    No, scusa, a me questo codice:
    codice:
    var PRIMO_ARRAY   = ["A", "B", "F", "C", "H"];
    var SECONDO_ARRAY = ["F", "H", "A", "I", "D"];
    
    function sottrai(a, b)
    {
    	var c = new Array(), i, j, found;
    	for(i = 0; i < a.length; i++)
    	{
    		found = false;
    		for(j = b.length - 1; j > -1; j--)
    		{
    			if(a[i] == b[j]){
    				b.splice(j, 1);
    				found = true;
    				break;
    			}
    		}
    		if(!found)c.push(a[i]);
    	}
    	return b.concat(c);
    }
    trace(sottrai(PRIMO_ARRAY, SECONDO_ARRAY));
    restituisce
    codice:
    I,D,B,C
    che sono in effetti gli elementi non comuni...

  9. #9
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Si capisco

    Ma a me servirebbe che mi restituise tutti gli elementi di PRIMO_ARRAY meno quelli in comune

    è leggermente diverso

    Grazie comque


  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Sempre seguendo l'esempio io vorrei ottenere:

    A-B-C

    ovvero togliere gli elementi comuni: F e H

    non mi sembra sia proprio così..

    Se sottrai le due erray dell'esempio
    var PRIMO_ARRAY = ["A", "B", "F", "C", "H"];
    var SECONDO_ARRAY = ["F", "H", "A", "I", "D"];

    ...dovresti casomai ottenere solo B,C

    In tal caso basta modificare la riga di return in questo modo:

    return c;

    Attenzione però che nella funzione viene utilizzato uno splice che modifica l'array

    b.splice(j, 1);

    quindi alla fine SECONDO_ARRAY avrà solo i valori I e D

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

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 © 2025 vBulletin Solutions, Inc. All rights reserved.