Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15
  1. #11
    Diciamo che ho avuto tempo di guardarci solo ora

    Cmq non ho ancora chiaro il giro . . .

    O meglio , questo esempio l'ho capito , ma non ho ancora
    ben chiaro il funzionamento del sort quando gli passo
    una funzione di parametro

    Avete qualche link un pò esplicativo ???

  2. #12
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Io l'ho capito mettendo insieme pezzi, un po' dal forum e un po` da varie fonti.

    Comunque se capisci un po' di JS, la cosa non e` difficilissima, anche se puo` sembrare astrusa.

    matricenuova = matrice.sort(funzione);

    matrice e` quella da ordinare.
    sort prende i primi due valori di matrice e li passa a funzione per il confronto (non c'e` scritto, ma e` implicito).
    funzione fa il confronto e ritorna +1, 0 -1 a seconda che i due termini passati siano in ordine o no.
    Se il ritorno e` un numero positivo o nullo, sort non fa nulla, altrimenti scambia i due valori nella matrice.
    sort procede cosi` fino a confrontare tutta la matrice (i valori contigui a due a due).
    Poi riprende daccapo, fino a che in tutti i passaggi non ha sempre un risultato positivo; quindi si ferma.

    Chiaro che se la funzione ritorna un valore negativo nel caso due termini siano uguali, sort entra in loop e non so cosa possa succedere.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #13
    Ora mi è + chiaro . . .

    Di JS son molto pratico (credo) . . .

    Cmq hai detto che la sort passa i primi 2 valori per il controllo,
    questo dipende dalla funzione custom che ho fatto giusto ???

    ovvero :

    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
    }

    ???

  4. #14
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Esatto.

    In questo specifico caso, la funzione sort passa alla ord le due matrici.
    Quindi la tua funzione ord deve confrontare il primo elemento delle due matrici passate; se sono diversi torna il valore +1 -1; se sono uguali, deve confrontare il secondo elemento delle due matrici passate e ritornare +1, 0 -1 a seconda.

    Po forse mi sono confuso: questa funzione ord ordina secondo il primo e il secondo campo, se il cfr deve essere fra il primo e il terzo, gli indici del secondo gruppo devono essere [2]
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #15
    Come pensavo

    Ora è tutto tutto chiaro

    Ed ho giò modificato la function

    Se invece avessi da controllare i 3 valori consecutivi farei :

    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

    if(a[2] > b[2]) return 1; // terzo campo in ordine
    if(a[2] < b[2]) return -1; // terzo campo in disordine
    return 0; // anche terzi campi uguali

    }

    Giusto ??

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.