Ordinare stringhe con caratteri speciali in Javascript

Mattepuffo's logo
Ordinare stringhe con caratteri speciali in Javascript

Ordinare stringhe con caratteri speciali in Javascript

Javascript ci mette a dispozione il metodo sort per ordinare gli array.

Ma di default fa una comparazione che potrebbe non funzionare correttemante in alcuni; come ad esempio in stringhe che hanno caratteri speciali.

Infatti provate questo script:

let arr = ['Bäri', 'Büssare', 'Kätia', 'Ändrea', 'Älberto'];
arr.sort();
console.log(arr);

Questo sarà il risultato:

Array(5) [ "Bäri", "Büssare", "Kätia", "Älberto", "Ändrea" ]

Come vedere non è ordinato come volevamo noi; e questo perchè i caratteri speciali non vengono considerati.

Abbiamo due soluzioni:

  • usare la funzione localCompare
  • usare Collator dell'oggetto Intl (che è il namespace delle API di internaziolizzazioni di ECMAScript)

Ecco qua il codice completo:

let arr = ['Bäri', 'Büssare', 'Kätia', 'Ändrea', 'Älberto'];

arr.sort(function (a, b) {
    return a.localeCompare(b);
});
console.log(arr);

arr.sort(Intl.Collator().compare);
console.log(arr);

Questi i risultati:

Array(5) [ "Älberto", "Ändrea", "Bäri", "Büssare", "Kätia" ]

Array(5) [ "Älberto", "Ändrea", "Bäri", "Büssare", "Kätia" ]

Come vedete adesso sono ordinati.

Enjoy!


Condividi

Commentami!