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!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2626 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy