Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    JS : Ordinamento matrice in base a 2 valori

    Ciao a tutti , ho una matrice di 5 colonne e 7 righe . . .

    Dovrei ordinare questa matrice in base a 2 valori , ovvero i primi 2 . . .

    Avete una funzione pronta che faccia questo ???

    Vi ringrazio

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    scusa ma non è molto chiaro... hai un array 7x5 ... e devi ordinare in base ai primi due valori? e poi che tipo di ordinamento dovrebbe essere?

    Non puoi fare un esempio concreto?
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Dunque , immagina una matrice 7righex5colonne

    Questa vorrei che fosse ordinata per la prima riga e poi per la seconda ,

    Per esempio , mettiamo che le colonne siano COGNOME , NOME , ANNI . . .

    Vorrei che fosse ordinata per COGNOME e NOME dando priorità alla prima colonna ovvero il cognome . . .

    Si riesce ???

    Ho provato a scrivere un algoritmo ma mi son incasinato . . .


  4. #4
    Scusami , volevo dire , immagina che le colonne contengano i valori relativi a COGNOME , NOME ANNI ecc...

    Dovrei ordinarle in base al loro contenuto per COGNOME e ANNI

    Chiaro ora ???

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    La funzione che puoi usare e` SORT.

    Per fare una cosa fatta bene, credo che devi costruire una tua funzione da richiamre nel sort, ma puoi anche fare un sort semiautomatico, prima secondo il Nome e poi il Cognome.

    Chiaramente il sort lo farai sulla matrice piu` esterna, passando al sort le varie sottomatrici e i campi opportuni.

    Ti faccio un esempio, ma non ho tempo per testarlo.
    codice:
    // definizione matrice
    var matr = new Array(7);
    for(var i=0; i<matr.length; i++) {
      matr[i] = new Array(5);
      ... qui devi scrivere qualcosa nella matrice ...
    }
    
    // sort
    matr = matr.sort(ord1);
    matr = matr.sort(ord0);
    alert('fine ordinamento');
    
    function ord1(a,b) {
      if(a[1] > b[1]) return 1;
      if(a[1] < b[1]) return -1;
      return 0;
    }
    function ord0(a,b) {
      if(a[0] > b[0]) return 1;
      if(a[0] < b[0]) return -1;
      return 0;
    }
    Studiando un po' la funzione, si potrebbe anche fare tutto in un colpo solo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  6. #6
    Ecco , a me serve qualcosa di già pronto

    non ho tempo per svilupparlo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Forse ci sono:
    codice:
    function ord(a,b) {
      if(a[0] > b[0]) return 1;    // primo campo in ordine
      if(a[0] < b[0]) return -1;   // primo campo in disordine
                                   // primi campi uguali
      if(a[1] > b[1]) return 1;    //   secondo campo in ordine
      if(a[1] < b[1]) return -1;   //   secondo campo in disordine
      return 0;                    //   anche secondi campi uguali
    }
    Da chiamare chiaramente con:
    matr = matr.sort(ord);
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Arg , non ti seguo . . .

    Cmq dopo provo

    Il metodo .sort() non lo conosco . . .

    Guardo un pò nella documentazione

  9. #9
    Ahhhh , funziona

    Non ho capito come faccia a funzionare ma funziona


  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come non hai capito?

    20 giorni per pensarci e non hai capito?

    Comunque la ratio del sort e` questa:
    1. c'e` un default che e` l'ordinamento alfabetico;
    2. se c'e` un parametro, questo deve essere una funzione che deve ritornare un valore maggiore, minore o uguale a zero (a seconda se si deve scambaire l'ordine o no);
    3. il sort passa alla funzione due argomenti: la funzione deve determinare se sono in ordine o no;
    4. nel tuo caso specifico, a e b sono matrici (il sort e` applicato ad un oggetto che e` una matrice di matrice), quindi per il confronto occorre confrontare gli argomenti della matrice passata.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

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.