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![]()
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![]()
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)
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 . . .
![]()
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 ???![]()
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.Studiando un po' la funzione, si potrebbe anche fare tutto in un colpo solo.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; }
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Ecco , a me serve qualcosa di già pronto
non ho tempo per svilupparlo![]()
Forse ci sono:Da chiamare chiaramente con: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 }
matr = matr.sort(ord);
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Arg , non ti seguo . . .
Cmq dopo provo![]()
Il metodo .sort() non lo conosco . . .![]()
Guardo un pò nella documentazione
Ahhhh , funziona
Non ho capito come faccia a funzionare ma funziona![]()
![]()
![]()
![]()
![]()
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