Если вы хотите отсортировать строки в алфавитном порядке, а не по числам, вот пример проблемы и ее решение.
Пример задачи: Массив массивов ( finalArray ) с первой записью пути к папке и второй записью имени файла;сортировать так, чтобы массив располагался сначала по папке, а внутри идентичных папок - по имени файла.
Например, после сортировки вы ожидаете:
[['folder1', 'abc.jpg'],
['folder1', 'xyz.jpg'],
['folder2', 'def.jpg'],
['folder2', 'pqr.jpg']]
См. Array.prototype.sort() - сравнениеФункция
finalArray.sort((x: any, y: any): number => {
const folder1: string = x[0].toLowerCase();
const folder2: string = y[0].toLowerCase();
const file1: string = x[1].toLowerCase();
const file2: string = y[1].toLowerCase();
if (folder1 > folder2) {
return 1;
} else if (folder1 === folder2 && file1 > file2) {
return 1;
} else if (folder1 === folder2 && file1 === file2) {
return 0;
} else if (folder1 === folder2 && file1 < file2) {
return -1;
} else if (folder1 < folder2) {
return -1;
}
});
Имейте в виду, «Z» стоит перед «а» (заглавные буквы в соответствии с кодовая точка Unicode ), поэтому у меня toLowerCase () .Проблема, которую вышеупомянутая реализация не решает, состоит в том, что «10abc» будет предшествовать «9abc».