Есть массив, в котором находятся имена файлов. Задача отсортировать массив в алфавитном порядке, то есть так, как эти имена файлов отображаются в файловом менеджере.
Если имена состоят только из букв или только из цифр, то легко:
var myFilteredFiles = ["A", "B", "C", "g10", "g8", "g1", "11", "H"];
myFilteredFiles.sort(function(x, y){
var r = x - y;
if(isNaN(r)){
r = isNaN(x) - isNaN(y);
if(r == 0) r = x.toLocaleLowerCase().localeCompare(y.toLocaleLowerCase());
}
return r;
});
Получим ["1", "8", "10", "11", "A", "B", "C", "H"]
Но если в именах встречаются и буквы и цифры, то сортировка не получается: ["A", "B", "C", "g10", "g8", "g1", "11", "H"] -> ["11", "A", "B", "C",
"g1", "g10", "g8", "H"]. А должно быть ["11", "A", "B", "C",
"g1", "g8", "g10", "H"]