Показать сообщение отдельно
  #16 (permalink)  
Старый 18.08.2020, 09:22
Новичок на форуме
Отправить личное сообщение для koros Посмотреть профиль Найти все сообщения от koros
 
Регистрация: 13.08.2020
Сообщений: 6

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() - потому что у меня в массиве хранятся файлы.

Большое спасибо всем поучаствовавшим за помощь.

Последний раз редактировалось koros, 18.08.2020 в 09:54.
Ответить с цитированием