[JS] Ordinare un array di date

Questo articolo è molto vecchio e potrebbe essere obsoleto

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 Unix time 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 :)

Articoli correlati

Abbonati al feed RSS. Se non sai cos'è guarda qui.

Abbonati alla newsletter per ricevere via email ogni nuovo articolo pubblicato. L'indirizzo verrà gestito da FeedBurner.

Dai il tuo parere, commenta questo articolo!
commenti su [JS] Ordinare un array di date
    Lascia un commento

    CC BY-NC-SA 3.0 2004-2020 Daniele Napolitano — Per informazioni sulla licenza leggere le Note legali