Blog


[JS] Ordinare un array di date

Oggi vediamo come ordinare un array caricato con stringhe di date così formattate: gg/mm/yyyy. Javascript fornisce una classe Array e tra i suoi metodi troviamo sort() che fa proprio al caso nostro. L’unico dettaglio è che sort effettua un confronto alfabetico. In caso di numeri o date non funzionerebbe.

Una peculiarità molto utile del metodo sort() è che può essere esteso per ordinare tipi arbitrari con l’uso di una funzione di due parametri, data proprio come argomento a sort().

function (a, b)


Questa funzione verrà chiamata da sort caricando in a e b gli elementi da confrontare. La funzione dovrà quindi restituire:
Post image

  • 1 (o positivo) se il primo parametro è maggiore del primo
  • 0 se sono uguali
  • -1 (o negativo) se il primo parametro è minore del secondo


Quindi per confrontare un numero basterà creare questa funzione

function(a, b) { return a[0] - b[0] }


Mentre per confrontare date formattate in una certa maniera occorre un po‘ di lavoro in più, ma nulla di impossibile.

In questo codice io prendo la stringa, divido il giorno, il mese e l’anno, quindi creo una nuova classe Date caricandola con i dati divisi. Adesso il confronto lo faccio con la [url=http://it.wikipedia.org/wiki/Tempo_(Unix)]Unix time[/url] restituita dal motodo getTime() di Date.

function(a,b){
a = a[0].split("/");
b = b[0].split("/");
a=new Date(a[2],a[1],a[0]);
b=new Date(b[2],b[1],b[0]);
return a.getTime() - b.getTime()
}


Spero di essere stato utile a qualcuno :)

Dai il tuo parere: Commenta questo articolo!
0 commenti su [JS] Ordinare un array di date
    Lascia un commento

    
    Webmaster .::DnaX::. - RSS
    CC 2004-2007 di DnaX Web Site. Per informazioni sulla licenza leggere le Note legali

    Lo script ha impiegato: 0.03853 sec.

    Torna su