voraa,
Большое спасибо за помощь. Я немного подредактировал ваш скрипт и у меня заработало:
function nsort (a,b) {
a = decodeURIComponent(a.name).toLowerCase();
b = decodeURIComponent(b.name).toLowerCase();
var re = /(\D*)((0*)(\d*))(.*)/;
var ra = re.exec(a);
var rb = re.exec(b);
if (ra[4].length && rb[4].length){
if(ra[1] === rb[1]){
if(ra[3].length != rb[3].length) return rb[3].length - ra[3].length
var na = +ra[2];
var nb = +rb[2];
if(na != nb) return na - nb;
}
else{
return ra[1].localeCompare(rb[1]);
}
if(ra[5].length || rb[5].length) return nsort(ra[5], rb[5]);
return 0;
}
return a.localeCompare(b);
}
decodeURIComponent(a.name).toLowerCase() - потому что у меня в массиве хранятся файлы.
Большое спасибо всем поучаствовавшим за помощь.