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!
javascript sort localcompare intl collator
Commentami!